Bean的生命周期
2023-02-19 11:45:54 0 举报
Bean的生命周期
作者其他创作
大纲/内容
Y
1、BeanNameAware2、BeanClassLoaderAware3、BeanFactoryAware
生成BeanDefinition
合并BeanDefinition
属性填充
doCreateBean()
进行AOP
Loop
创建Bean
处理MergedBeanDefinition
!bd.isAbstract() && bd.isSingleton() && !bd.isLazyInit()
getBean(beanName)
加载类
1、调用 @PostConstruct 标记的方法InitDestroyAnnotationBeanPostProcessor2、执行Aware回调(ApplicationContextAwareProcessor)EnvironmentAware、EmbeddedValueResolverAware、ResourceLoaderAware、ApplicationEventPublisherAwareMessageSourceAware、ApplicationStartupAware、ApplicationContextAware、
调用接口的afterSingletonsInstantiated()
初始化后
Bean的类型是否为SmartInitializingSingleton
如果FactoryBean实例是SmartFactoryBean类型&& isEagerInit属性值为true
实例化前
Aware回调
初始化
实例化
populateBean()
扫描和解析配置类,生成BeanDefinition,放入容器。
初始化前
Bean的生命周期
1、寻找注入点AutowiredAnnotationBeanPostProcessor --> @Autowired、@Value、@InjectCommonAnnotationBeanPostProcessor --> @Resource2、寻找 和Bean生命周期 相关的方法InitDestroyAnnotationBeanPostProcessor --> @PostConstruct、@PreDestroy
initializeBean()
N
getBean(FACTORY_BEAN_PREFIX + beanName)
isFactoryBean(beanName)
实例化后
1、找出Advisor2、解析切面类(开启AOP的情况下)
1、调用 InitializingBean#afterPropertiesSet 方法2、调用 BeanDefinition 中指定的 initMethod
0 条评论
下一页