【发布时间】:2016-04-06 00:59:23
【问题描述】:
我目前是春天的新手。我试图遵循 PostConstruct 和 BeanPostProcessor 的调用顺序。
根据我了解到的以下是顺序:-
- BPP -> postProcessBeforeInitialization
- 后构造
- BPP -> postProcessAfterInitialization
但是我看到以下顺序被遵循:-
- 后期构造
- BPP -> postProcessBeforeInitialization
- 后构造
- BPP -> postProcessAfterInitialization
SpringConfig 文件 foo.xml 移除了 beans 标签 上下文:组件扫描 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");
}}
回应
- 初始化 MySpring 构造函数
- 初始化 ApplicationContext
- PostConsturctclass springtest.MySpring
- 属性设置类 springtest.MySpring 之后
- 在 BPP 类 org.springframework.context.event.EventListenerMethodProcessor 之前
- PostConsturctclass springtest.MySpring
- 属性设置类 springtest.MySpring 之后
- 在 BPP 类 springtest.MySpring 之后
- 在 BPP 类 org.springframework.context.event.DefaultEventListenerFactory 之前
- PostConsturctclass springtest.MySpring
- 属性设置类 springtest.MySpring 之后
- 在 BPP 类 springtest.MySpring 之后
MySpring.temp 值为 3 表示 PostContruct 被调用了 3 次。
有人可以在上面帮助我吗...
【问题讨论】:
标签: java spring spring-mvc