Spring Bean 生命周期流程图
2020-06-16 10:01:22 0 举报
Spring Bean 生命周期流程图
作者其他创作
大纲/内容
如果 Bean 是 EnhancedConfiguration的实现类,则注入 `BeanFactory`。
ImportAwareBeanPostProcessor#postProcessAfterInstantiation
将 ApplicationListener类型的 Bean,加入到容器的 applicationListeners中
Bean
AnnotationAwareAspectJAutoProxyCreator#postProcessAfterInstantiation
CommonAnnotationBeanPostProcessor#postProcessBeforeInstantiation
AutowiredAnnotationBeanPostProcessor#postProcessProperties
AutowiredAnnotationBeanPostProcessor#postProcessAfterInstantiation
完成 @Resource 依赖注入。
如果 Bean 是 BeanPostProcessor 子类,则检查 BeanPostProcessor 数量。
检查 Bean 和提前暴露的引用是否相同,不同则重新生成代理对象。
ApplicationContextAwareProcessor#postProcessAfterInitialization
beanFactory#destroyBean(bean)
InstantiationAwareBeanPostProcessor
AnnotationAwareAspectJAutoProxyCreator#postProcessBeforeInitialization
BeanPostProcessor#postProcessAfterInitialization
MergedBeanDefinitionPostProcessor#postProcessMergedBeanDefinition
完成 @Autowired 和 @Value 注入
CommonAnnotationBeanPostProcessor#postProcessProperties
AutowiredAnnotationBeanPostProcessor#postProcessBeforeInstantiation
注入 BeanNameAware、BeanClassLoaderAware 和 BeanFactoryAware
ApplicationListenerDetector就是一个 DestructionAwareBeanPostProcessor。但是,Bean 销毁时,不知道为什么没有被调用。
要调用 LifecycleMetadata 的 initMethod 方法,但是,里面去没有任何实现。
返回 null,则执行下面的方法。
AnnotationAwareAspectJAutoProxyCreator#postProcessPropertyValues
BeanPostProcessor
InstantiationAwareBeanPostProcessor#postProcessProperties
\"地瓜哥\"博客网 · https://www.diguage.com · 出品
ImportAwareBeanPostProcessor#postProcessProperties
InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation
ApplicationListenerDetector#postProcessAfterInitialization
CommonAnnotationBeanPostProcessor#postProcessAfterInitialization
DestructionAwareBeanPostProcessor#postProcessBeforeDestruction
InitializingBean#afterPropertiesSet
如果实现了 ImportAware 接口,则注入 importMetadata 信息。
ApplicationContextAwareProcessor#postProcessBeforeInitialization
判断是否属于基础切面类,如果有指定的 Target 则生成代理。
BeanPostProcessor#postProcessBeforeInitialization
构造函数
BeanPostProcessorChecker#postProcessBeforeInitialization
AutowiredAnnotationBeanPostProcessor#setBeanFactory
BeanPostProcessorChecker#postProcessAfterInitialization
InstantiationAwareBeanPostProcessor#postProcessAfterInstantiation
收集 @Autowired 的依赖信息。
ImportAwareBeanPostProcessor#postProcessAfterInitialization
AnnotationAwareAspectJAutoProxyCreator#postProcessAfterInitialization
CommonAnnotationBeanPostProcessor#postProcessMergedBeanDefinition
ImportAwareBeanPostProcessor#postProcessBeforeInitialization
DisposableBean#destroy
destroy-method
init-method
CommonAnnotationBeanPostProcessor#postProcessBeforeInitialization
AutowiredAnnotationBeanPostProcessor#postProcessBeforeInitialization
CommonAnnotationBeanPostProcessor#postProcessAfterInstantiation
postProcessBeforeInstantiation 是断路功能,如果创建实例,则直接返回,不再进行后续的调用。如果创建了示例,则直接调用 BeanPostProcessor#postProcessAfterInitialization 方法,接着直接返回,不再执行后续操作。
Spring Bean 生命周期流程图
注入EnvironmentAware、EmbeddedValueResolverAware、ResourceLoaderAware、ApplicationEventPublisherAware、MessageSourceAware 和 ApplicationContextAware
图例:1. 斜体表示空方法,无任何操作。2. 加粗斜体表示继承父类实现,但父类是空方法,无任何操作。3. 深灰色背景,则表示跳过,不执行。 \"地瓜哥\"博客网 · https://www.diguage.com · 出品
ImportAwareBeanPostProcessor#postProcessBeforeInstantiation
CommonAnnotationBeanPostProcessor#postProcessPropertyValues
ApplicationListenerDetector#postProcessBeforeInitialization
AutowiredAnnotationBeanPostProcessor#postProcessMergedBeanDefinition
AnnotationAwareAspectJAutoProxyCreator#postProcessProperties
AnnotationAwareAspectJAutoProxyCreator#postProcessBeforeInstantiation
MergedBeanDefinitionPostProcessor
ApplicationListenerDetector#postProcessMergedBeanDefinition
AutowiredAnnotationBeanPostProcessor#postProcessAfterInitialization
ImportAwareBeanPostProcessor#postProcessPropertyValues
判断 Bean 是否是一个 `ApplicationListener`,是则保留
收集 @Resource 依赖信息,@PostConstruct 和 @PreDestroy 等信息。
收藏
收藏
0 条评论
下一页