I am currently new to spring. I was trying to follow the order in which PostConstruct and BeanPostProcessor are called.
According to what I have learned the below is the order :-
- BPP -> postProcessBeforeInitialization
- PostContruct
- BPP -> postProcessAfterInitialization
However I see the below order being followed:-
- PostContruct
- BPP -> postProcessBeforeInitialization
- PostContruct
- BPP -> postProcessAfterInitialization
SpringConfig file foo.xml Removed the beans tag context:component-scan base-package="springtest"
@Component
public class MySpring implements ApplicationContextAware,BeanPostProcessor{
public static int temp =0;
public MySpring(){
System.out.println("Initializing MySpring Constructor");
}
@PostConstruct
public void temp(){
System.out.println("PostConsturct" + this.getClass());
temp++;
}
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("Before BPP " + bean.getClass());
return this;
}
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("After BPP " + bean.getClass());
return this;
}
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
System.out.println("Initializing ApplicationContext");
}}
Response
- Initializing MySpring Constructor
- Initializing ApplicationContext
- PostConsturctclass springtest.MySpring
- After Properties set class springtest.MySpring
- Before BPP class org.springframework.context.event.EventListenerMethodProcessor
- PostConsturctclass springtest.MySpring
- After Properties set class springtest.MySpring
- After BPP class springtest.MySpring
- Before BPP class org.springframework.context.event.DefaultEventListenerFactory
- PostConsturctclass springtest.MySpring
- After Properties set class springtest.MySpring
- After BPP class springtest.MySpring
MySpring.temp value is 3 means PostContruct was calles 3 times.
Could someone please help me in the above...