2012-11-29 1 views
4

스프링 컨텍스트 xml 파일 내에 구성된 속성 파일이 있습니다. 파일에서 값을로드합니다. 스프링 관리가 아닌 일반 pojo에서 해당 속성 파일의 속성을로드하려고합니다. Spring은 이미 그 속성을로드했기 때문에, 속성 파일을 수동으로로드해야하는 대신 값을 얻는 방법이 있는지 궁금합니다.Spring에서 관리하지 않는 pojo에서 Spring 컨텍스트로부터 속성을 얻는 방법?

+0

왜 pojo를 관리하지 않습니까? 특히 속성에 접근하기 위해 Spring 컨테이너에 손을 올려야하는 경우, 왜 pojo를 관리하지 않는가? – chad

+1

Spring 컨텍스트를 유지하고 속성에 그런 식으로 액세스 할 수 없습니까? 나는 그것이 그들이 속성 설정자를 얻는 방법이라고 확신한다. 그렇지 않다면, 주입 된 속성으로 Spring을 관리하는 간단한 pojo를 항상 가질 수 있습니다. 그런 다음 pojo에 액세스하여 해당 속성을 가져옵니다. 그것은 우아하지 않지만, 일을 끝낼 것입니다. – JustinKSU

+0

@ chad/@ 저스틴, 메소드 내에서, 특정 조건이 참인 경우에만 속성 값을 가져와야하며 콩이 스프링 관리되는 경우에도 과도한 느낌이 들도록 필드를 작성해야합니다. – bond

답변

6

pojo가 Spring에 의해 관리되지 않는 경우 정적 컨텍스트에 액세스 할 수 있습니다.

응용 프로그램 XML에 빈을 추가

public class StaticSpringApplicationContext implements ApplicationContextAware { 
    private static ApplicationContext CONTEXT; 

     public void setApplicationContext(ApplicationContext context) throws BeansException { 
     CONTEXT = context; 
     } 

     public static Object getBean(String beanName) { 
     return CONTEXT.getBean(beanName); 
     } 

} 

는 그런 다음 사용하여 POJO에서 어떤 스프링 빈을 액세서 수 있습니다 :

<bean id="StaticSpringApplicationContext" class="com.package.StaticSpringApplicationContext"/> 

클래스 만들기

StaticSpringApplicationContext.getBean("yourBean") 
관련 문제