类A托管给spring,类A里有一属性B,且有B的Set方法,且类A实现了InitializingBean,及init()方法,则类A的初始化顺序为:
先A的构造函数----->B的set方法------>afterPropertiesSet方法里执行的内容------>init()方法
spring的通用规则:
一,单一Bean加载时
- 优先加载BeanPostProcessor的实现Bean
- 实例化;
- 设置属性值
- 如果实现了BeanNameAware接口,调用setBeanName设置Bean的ID或者Name
- 如果实现BeanFactoryAware接口,调用setBeanFactory 设置BeanFactory
- 如果实现ApplicationContextAware,调用setApplicationContext设置ApplicationContext
- 调用BeanPostProcessor的预先初始化方法