Spring - BeanPostProcessor
2020. 8. 16. 19:18ㆍJava/Spring
반응형
Bean 객체를 정의할 때 init-method 속성을 설정하면 객체가 생성될 때 자동으로 호출될 메서드를 지정할 수 있다.
이 때 BeanPostProcessor 인터페이스를 구현한 클래스를 정의하면 Bean 객체를 생성할 때 호출될 init 메서드 호출을 가로채 다른 메서드를 호출 수 있도록 할 수 있다.
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
public class TestBeanProcess implements BeanPostProcessor{
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
// TODO Auto-generated method stub
System.out.println("after");
return bean;
}
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
// TODO Auto-generated method stub
System.out.println("before");
return bean;
}
}
bean에는 넘어온 bean 객체의 주소 값이 담겨있고, beanName은 id값이 담겨있다.
beanName을 이용하여 각 객체에 따라서 다른 설정을 줄 수 있다.
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
// TODO Auto-generated method stub
System.out.println("after");
switch(beanName){
case "t1":
System.out.println("id가 t1인 객체 생성");
break;
case "t2":
System.out.println("id가 t2인 객체 생성");
break;
}
return bean;
}
- postProcessBeforeInitialization : init-method에 지정된 메서드가 호출되기 전에 호출된다.
- postProcessAfterInitialization : init-method에 지정된 메서드가 호출된 후에 호출된다.
- init-method 가 지정되어 있지 않더라도 자동으로 호출된다.
beans 파일에 다음과 같이 클래스 위치를 선언해주자!
<bean class='kr.co.softcampus.process.TestBeanProcess'/>
반응형
'Java > Spring' 카테고리의 다른 글
Spring - 빈 객체 값 주입 (Setter 메소드) (0) | 2020.08.17 |
---|---|
Spring - 빈 객체 값 주입(생성자) (0) | 2020.08.17 |
Spring - 빈 객체 생성 및 생명주기 (0) | 2020.08.16 |
Spring - IoC 컨테이너로 빈 관리하기 (0) | 2020.08.15 |
Spring - 개발환경 세팅(Maven Project) (0) | 2020.08.13 |