spring bean实例化过程及顺序
最佳答案 问答题库478位专家为你答疑解惑
spring bean的初始化从doCreateBean方法开始,依次会调用下面三个方法执行bean的初始化。大部分方法都在AbstractAutowireCapableBeanFactory类中。
实例化
createBeanInstance()方法根据BeanDef获取bean对应的class通过反射调用构造函数进行bean的实例化。
这里会判断是否使用工厂或指定构造函数进行实例化bean,否则使用无参构造函数进行实例化。
属性注入
populateBean()方法会进行属性的注入,也就是完成IOC依赖注入功能。也就是我们通过@AutoWire,@Resource等注入的属性。
在属性注入前如果有InstantiationAwareBeanPostProcessors会尝试执行其接口方法。
初始化
initializeBean()方法会完成一些后置callback方法的执行
1、aware方法回调
invokeAwareMethod()回调aware方法,如果Bean实现了Spring的Aware接口,会通过回调方式将特定的资源设置到Bean中。这里的aware方法只回调和bean相关的aware,包括BeanNameAware、BeanClassLoaderAware和BeanFactoryAware。
2、BeanPostProcessors 前置方法回调
Spring提供了BeanPostProcessor接口,可以在Bean的初始化前后执行一些额外的处理逻辑,这里会调用前置处理方法
3、初始化方法回调
如果Bean实现了InitializingBean接口,Spring会调用其重写的afterPropertiesSet()初始化方法,进行一些自定义的初始化逻辑。
另外也可以通过@PostConstruct自定义初始化方法,也会在这个阶段被调用。
也可以通过xml init-method属性指定初始化方法
4、BeanPostProcessors 后置方法回调
同第2步,这里会调用BeanPostProcessor的后置方法。
spring在bean初始化的过程中有上面这么多回调方法可以进行扩展,我们需要记住他们的执行顺序,然后根据业务在适当点进行扩展既可。像AOP其实就是通过BeanPostProcessor进行实现的。还有自定义初始化方法应该都有用过。
99%的人还看了
相似问题
- Kotlin学习——kt里的集合,Map的各种方法之String篇
- Office文件在线预览大全-Word文档在线预览的实现方法-OFD文档在线预览-WPS文件在线预览
- composer切换全局镜像源的方法
- Python通过selenium调用IE11浏览器报错解决方法
- 测试用例的设计方法(全):正交实验设计方法|功能图分析方法|场景设计方发
- Java8新特性 ----- Lambda表达式和方法引用/构造器引用详解
- C#中抽象类、抽象方法和接口暨内联临时变量的精彩表达
- ChatGLM2 大模型微调过程中遇到的一些坑及解决方法(更新中)
- 类方法,静态方法和实例方法的区别及应用场景
- 【链表的说明、方法---顺序表与链表的区别】
猜你感兴趣
版权申明
本文"spring bean实例化过程及顺序":http://eshow365.cn/6-14086-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: MySQL数据库基础知识要点总结
- 下一篇: 视频编解码器H.264和H265有什么区别?