1. init-method : 커스텀 초기화 메서드
2. destroy-method : 커스텀 소멸 메서드


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


LifeBean.java


LifeBeanImpl.java

ExamMain.java


life.xml


결과


ExamMain.java에서 bean.lifeMethod( )를 실행했을 경우 결과창을 잘 보면 사용자(개발자)가 설정한 초기화 메소드가 실행된 것을 볼 수있다.
이는 <bean> 태그의 init-method, destroy-method 속성 값을 설정해주면 스프링 컨테이너가 빈을 생성시 init-method="...", 종료(제거)시 destroy-method="..."의 설정 값을 실행하게 된다.


4. ApplicationContextAware 인터페이스
  => 빈 객체가 필요한 객체를 스프링 컨테이너(BeanFactory나 ApplicationContext)로부터 직접 사용해야 할 경우


LifeBean.java


LifeBeanImpl.java

OtherBean.java


OtherBeanImpl.java


ExamMain.java


life02.xml


결과


위의 예제에서는 ApplicationContextAware 인터페이스를 사용했지만 BeanFactoryAware 인터페이스를 사용해도 된다.
BeanFactoryAware를 사용할 경우는 아래와 같은 방법으로 BeanFactory를 정의한다.

public void setBeanFactory(BeanFactory factory) throws BeansException{
     this.factory = factory;
}


/** 위 2개의 결과창에서 주의깊게 볼 점은 바로 실행순서이다. 실행순서가 어떻게 되는지 봐두는 것도 도움이 될 것이다. **/

+ Recent posts