**
SpringBean的生命周期:
**
1、实例化Bean
对于beanfactory容器,当用户请求一个未初始化的bean或者初始化bean时需要注入另一个尚未初始化的依赖对象时,调用createbean进行实例化。对于applicationContnext容器,容器启动时,已经通过获取BeanDefinition对象中的信息,实例化了所有的bean。
2、设置对象属性
实例化后的对象呗封装在BeanWrapper对象中,spring根据BeanDefinition中的信息以及BeanWrapper提供的设置属性的接口完成依赖注入
3、处理Aware接口
Spring检查改对象是否实现了XXXAware接口,并将相应的实例注入给bean
4、BeanPostProcessor
如果想对bean进行一些自定义的处理,可以让bean实现beanpostProcessor接口,将会调用postProcessBeforeInitialization(Object obj,String s)方法。由于这个方法是在Bean初始化结束时调用的,所以可以被用于内存或缓存技术。
5、Init_method与InitializingBean
如果bean在spring配置文件中配置了init_method属性,则自动调用其配置的初始化方法。
---------------------此时bean被创建,并可以正确使用-------------------
6、DiSposableBean
当bean不再需要的时候,会经过清理阶段,如果实现了DisposableBean接口,则会调用其实现的destory方法。
7、Destory-method
如果这个bean的spring配置文件中配置了destory-method,则会调用其配置的销毁方法。
Bean的作用域:
1、singleton,默认,每个容器只有一个bean实例,单例的模式由beanFactory自身来维护
2、Prototype,为每个bean请求提供一个实例。
3、Request,为每一个网络请求创建一个实例,在请求完成后,bean失效并且被垃圾回收器回收。
4、Session,与request类似,确保每一个session中有一个bean,session失效bean失效
5、Global-session全局作用域。
Bean的注入方式
1、set()注入
对象有set方法,配置xml文件时配置set注入
2、构造器注入
使用构造函数的注入方式,xml文件中配置构造器注入,配置参数
3、静态工厂注入
4、实例化工厂注入
详情请看
https://blog.csdn.net/a745233700/article/details/89307518
面试题总结请看
https://blog.csdn.net/a745233700/article/details/80959716