Bean生命周期
2021-12-08 21:55:31 0 举报
Spring Bean的生命周期
作者其他创作
大纲/内容
创建BeanFactory
实例化前
ClassUtils.getDefaultClassLoader()1、优先返回当前线程中的ClassLoader2、线程中类加载器为null的情况下,返回ClassUtils类的类加载器3、如果ClassUtils类的类加载器为空,那么则表示是Bootstrap类加载器加载的ClassUtils类,那么则返回系统类加载器
生成BeanDefinition
初始化BeanFactory
启动ApplicationContext
初始化后
初始化前
加载类
合并BeanDefinition
扫描(BeanFactory后置处理器,基于ASM)
实例属性填充&填充后
BeanPostProcessor.postProcessAfterInitialization()Spring AOP实现
1、查看当前Bean对象是否实现了InitializingBean接口,如果实现了就调用其afterPropertiesSet()方法;2、执行BeanDefinition中指定的初始化方法。
推断构造方法(默认使用无参构造方法)
BeanDefinition后置处理
初始化
BeanPostProcessor.postProcessBeforeInitialization()
处理@Autowired、@Resource、@Value等注解;通过InstantiationAwareBeanPostProcessor.postProcessProperties()实现
执行一些回调,包括:BeanNameAware:回传beanName给bean对象。BeanClassLoaderAware:回传classLoader给bean对象。BeanFactoryAware:回传beanFactory给对象。
执行BeanFactory后置处理器
执行Aware
父子BeanDefinition(parent属性)生成RootBeanDefinition
实例化后
InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation()
MergedBeanDefinitionPostProcessor.postProcessMergedBeanDefinition(),可以对此时的BeanDefinition进行更改
实例化
收藏
收藏
0 条评论
下一页