1.6.2 ApplicationContextAware과BeanNameAware

3. BeanNameAware 인터페이스 => 빈 객체가 자기 자신의 이름을 알아야 하는 경우에 사용. => 빈 클래스가 BeanNameAware를 구현한 경우 컨테이너는 setBeanName( )메서드를 호출하여 빈 객체의 이름을 전달. => setBeanName(String arg) : 객체가 생성될 때 해당 객체(빈)의 id(혹은 name)값을 전달 받는 메서드 4. ApplicationContextAware 인터페이스 => 빈 객체가 필요한 객체를 스프링 컨테이너(BeanFactory나 ApplicationContext)로부터 직접 사용해야 할 경우

<빈의 일생> 인스턴스화-> 프로퍼티 할당->BeanNameAware의 setBeanName()->BeanFactoryAware의 setBeanFactory() -> ApplicationContextAware의 setApplicationContext() -> BeanPostProcessors의 사전 초기화 -> InitializingBean의 afterPropertiesSet() -> 커스텀호출 메소드 초기화 -> BeanPostProcessor의 후속초기화-----------> --------빈을 사용할 준비가 완료된다.--------------------------------컨테이너가 종료된다.----------------------------------------- DisposableBean의 destroy() --->커스텀 소멸 메소드호출 1. 스프링이 빈을 인스턴스화한다.

2. 스프링이 값과 빈의 레퍼런스를 빈의 프로퍼티에 주입한다.

3. 빈이 BeanNameAware를 구현하면 스프링이 빈의 ID를 setBeanName()메소드에 넘긴다.

4. 빈이 BeanFactoryAware를 구현하면 setBeanFactory()메소드를 호출하여 빈 팩토리 자체를 넘긴다.

5. 빈이 ApplicationContextAware를 구현하면 스프링이 setApplicationContext()메소드를 호출하고 둘러싼 애플리케이션 컨텍스트에 대한 참조를 넘긴다.

6. 빈이 BeanPostProcessor인터페이스를 구현하면 스프링은 postProcessBeforeInitialization()메소드를 호출한다.

7. 빈이 InitializingBean인터페이스를 구현하면 스프링은 afterPropertiesSet()메소드를 호출한다. 마찬가지로 빈이 init-method와 함께 선언했으면 지정한 초기화 메소드가 호출된다.

8. 빈이 BeanPostProcessor를 구현하면 스프링은 postProcessAfterInitialization()메소드를 호출한다.

9. 이 상태가 되며 빈은 애플리케이션에서 사용할 준비가 된 것이며, 애플리케이션 컨텍스트가 소멸될 때까지 애플리케이션 컨텍스트에 남아있다.

10. 빈이 DisposableBean인터페이스를 구혀하면 스프링은 destroy()메소드를 호출한다. 마찬가지로 빈이 destory-method와 함께 선언됐으면 지정된 메소드가 호출된다.

ApplicationContexorg.springframework.context.ApplicationContextAware인터페이스를 구현하는 객체 인스턴스를 생성 할 때, 인스턴스는 해당 ApplicationContext에 대한 참조와 함께 제공됩니다. 다음 목록은 ApplicationContextAware인터페이스 의 정의를 보여줍니다 .

public interface ApplicationContextAware {

    void setApplicationContext(ApplicationContext applicationContext) throws BeansException;
}

따라서 따라서 bean은 이를 생성 한 ApplicationContext를 프로그래밍 방식으로 조작 할 수 있습니다. ApplicationContext 인터페이스를 통해 또는이 인터페이스의 알려진 서브 클래스 (예 : ConfigurableApplicationContext.) 한 가지 용도는 다른 bean을 프로그래밍 방식으로 검색하는 것입니다. 때때로 이 기능은 유용합니다. 그러나 일반적으로 Spring에 코드를 연결하고 공동 작업자가 Bean에 속성으로 제공되는 Inversion of Control 스타일을 따르지 않으므로 이를 피하십시오. ApplicationContext의 다른 메소드는 파일 자원에 대한 액세스, 응용 프로그램 이벤트 공개 및 MessageSource액세스를 제공합니다. 이러한 추가 기능에서 설명> ApplicationContext 의 추가 기능.

Spring 2.5에서, autowiring은에 대한 참조를 얻기위한 또 다른 대안 ApplicationContext이다. "전통적" constructorbyTypeautowiring 모드 ( Autowiring Collaborators에 설명되어 있음 )는 ApplicationContext각각 생성자 인수 또는 setter 메서드 매개 변수에 대한 유형의 종속성을 제공 할 수 있습니다 . autowire 필드 및 다중 매개 변수 메소드를 포함한 더 많은 유연성을 위해 새로운 주석 기반 자동 와이어 링 기능을 사용하십시오. 그렇게 ApplicationContext하면 필드는 ApplicationContext해당 필드, 생성자 또는 메서드가 @Autowired주석을 전달하는 경우 해당 형식 을 예상하는 필드, 생성자 인수 또는 메서드 매개 변수로 자동 작성됩니다. 자세한 내용은 @Autowired 사용 참조하십시오 .

ApplicationContextorg.springframework.beans.factory.BeanNameAware를 구현하는 클래스를 생성 할 때, 클래스에는 관련 객체 정의에 정의 된 이름에 대한 참조가 제공됩니다. 다음 목록은 BeanNameAware 인터페이스의 정의를 보여줍니다.

public interface BeanNameAware {

    void setBeanName(String name) throws BeansException;
}

콜백은 일반적인 bean 프라퍼티의 활성화 이후지만 같은 초기화 콜백(InitializingBean, afterPropertiesSet또는 사용자 정의 초기화-방법.) 전에 호출

Last updated