Spring的生命周期
Spring的生命周期
1.BeanDefinition(依赖注入)
bean的定义,存放bean的:
1.scope:是否是单例
2.initMethod:初始化方法
3.byName/byType:bean的注入方式
4.@dependsOn:该bean初始化是依赖的类,必须先生成
......
new 出原始对象,放入三级缓存,三级缓存中存放的是关于原始对象的lambda表达式
2.属性填充
在属性填充时涉及到其它bean时,先去单例池中找对应的bean——》如果没有找到,就去三级缓存中找——》找到对应原始对象的lambda表达式后执行AOP,得到代理对象,移除对应lambda表达式(保持单例)——》放入二级缓存
实例化前,可以获取各种Aware,用来改变类的信息。比如:BeanNameAware、BeanFactoryAware、 ApplicationContextAware
调用BeanPostProcessor的预初始化方法(postProcessorBeforeInitialization方法)
调用InitializingBean的afterPropertiesSet方法,可以针对某个具体的bean进行配置
3.初始化
调用BeanPostProcessor的后初始化方法(postProcessorAfterInitialization方法)
在这个阶段可以进行aop操作(前提是前面没有提前进行过AOP)
放入单例池
4.销毁