2010-05-27 3 views

답변

5

일반적으로 클래스에는 응용 프로그램 컨텍스트가 필요하지 않지만 Spring에서 삽입하는 개체가 필요합니다. 그리고이 값은 해당 applicationContext에서 구성됩니다.

이러한 응용 프로그램은 일반적으로 new ClassPathXmlApplicationContext("applicationContext.xml")을 한 번만 호출합니다.

3

의존성 주입을 사용하면 일반적으로 그러지 않아도됩니다. 그러나 클래스가 실제로 애플리케이션 컨텍스트를 인식해야하는 경우 ApplicationContextAware 인터페이스를 구현하십시오. Spring은 해당 인터페이스에 정의 된 setApplicationContext 메소드를 자동으로 호출하여 클래스에 애플리케이션 컨텍스트를 제공합니다.

파일 시스템 리소스에 액세스하려는 경우 ResourceLoaderAware을 사용해야합니다. 메시지 소스에 액세스하려면 인터페이스를 구현하지 마십시오. 대신, MessageSource bean에 대한 참조를 삽입하십시오.

+0

MessageSource를 가져 오기 위해'MessageSourceAware'를 구현하는 것이 잘못된 이유는 무엇입니까? 나는 이것을 응용 프로그램에 대해 수행했으며 항상 정상적으로 작동했습니다. – jasonmp85

+0

끔찍한 잘못은 없지만 참조를 전달하기 만하면 인터페이스를 구현해야하는 이유는 무엇입니까? – Jeff

2

다른 질문에 대한 답변에서 조언을 받아야한다고 생각합니다. here. ApplicationContextAware 또는 ServletContextAware (서블릿 컨테이너에있는 경우)를 구현하는 것이 컨텍스트를 얻는 가장 좋은 방법입니다.

스프링이 종속성 주입 또는 제어 반전을 처리하는 방법을 찾습니다.

2

한 번.

사실, Spring이 무거운 짐을 들게하고 다른 방법보다는 클래스를 빌드/구성하도록해야합니다.

전체 아이디어는 스프링 프레임 워크가 제공하는 '마술처럼'의존성에 대해 외부 세계를 호출하지 않고도 모든 클래스를 빌드 할 수 있다는 것입니다.

이 접근법은 사용자가 암시하는 ServiceLocator 패턴에서 벗어나기 위해 즉, 객체에 대한 참조를 가져 와서 필요한 의존성, 예를 들어 JNDI를 얻도록 고안되었습니다.

관련 문제