2012-06-04 2 views
3

Spring에서 관리하지 않는 Bean에서 Spring ApplicationContext에 액세스하는 데 사용할 수있는 ApplicationContextProvider 클래스가 있습니다. 언급 된 것과 같은 것 here모든 Spring에서 관리하는 공통 SpringApplicationContextProvider를 가지고 있고 그렇지 않으면

스프링 관리 빈의 경우 ApplicationContextAware를 만들 수 있으므로 ApplicationContext에 액세스 할 수 있습니다.

제 질문은 일반 ApplicationContextProvider를 사용하여 Spring 관리 빈에서 Spring 응용 프로그램 컨텍스트를 가져 오는 것이 좋을까요, 아니면 ApplicationContextAware를 계속 사용해야할까요?

답변

2

응용 프로그램 컨텍스트에 대한 정적 참조가있는 싱글 톤을 사용하면 문제가 발생할 수 있습니다. 어떤 경우에도 그런 유틸리티 클래스를 사용하는 것은 거의 좋은 생각이 아닙니다. 레거시 웹 응용 프로그램을 사용할 때는 WebApplicationContextUtils을 대신 사용하십시오.

EJB 2.1에서 Spring으로 마이그레이션하는 동안 프로젝트에서이 솔루션을 다시 한번 재발 명했습니다. 그러나 마이그레이션 후 마이그레이션을 제거하고 다시 잠을 잘 수 있습니다.

귀하의 질문에 다시 - bean 용으로 그런 유틸리티를 사용하면 전혀 감각이 없습니다. 솔직하게 말해서, 나는 거의 ApplicationContextAware 인터페이스도 필요로하지 않습니다. Spring은 의존성을 주입한다고 가정 할 때마다 Spring에 항상 요구해서는 안됩니다!

인용 된 유틸리티 클래스 (관리 Bean과 관리 Bean 모두)가 필요할 때 활용 사례를 보여줄 수 있습니까? 당신이 봄을 당신에게주는 지원을 받아들이기를 거부하는 것처럼 보입니다.

관련 문제