总结
第一大步:
0.class.forName得到class
第二大步:
1.实例化之前 调用InstantiationAwareBeanPostProcessor.processBeforeXX(),processAfterXX()的方法
2.实例化,调用构造方法 obj.newInstance()
第三大步:
3.初始化-依赖注入之前调用InstantiationAwareBeanPostProcessor的方法得到field的值
4.初始化-依赖注入 applyPropertyValues();
第四大步:
5.初始化-init()和afterPropertiesSet()方法之前 调用beanPostFactory.processBeforeXX()
6.初始化-init()和afterPropertiesSet()
7.初始化-init()和afterPropertiesSet()方法之前 调用beanPostFactory.processAfterXX()
应用场景举例
在7.的应用场景:
如果配置aop生成代理对象的类:DefaultAdvisorAutoProxyCreator,这个类会使用pointcut的方式是aspectJ。这个类就是实现BeanPostProcessor。
那么生成代理最终的对象就是(通过这个类)在这一步生成的
网友评论