class All{
// ContextAnnotationAutowireCandidateResolver: 用于解析@Value,@Lazy...注解的Bean
// ConfigurationClassPostProcessor: 解析所有Bean相关注解配置信息
// AutowiredAnnotationBeanPostProcessor: 解析@Autowired自动注入
// CommonAnnotationBeanPostProcessor: 处理@Resource,@PostConstruct注解的类
// PersistenceAnnotationBeanPostProcessor: 处理JPA中两个注解PersistenceContext和PersistenceUnit的处理器
// EventListenerMethodProcessor: 用于处理@EventListener注解
// DefaultEventListenerFactory: 用于处理@EventListener->ApplicationListener接口的类
// ClassPathBeanDefinitionScanner: 扫描类路径下的扫描器->BeanDefinition的过程类
// Aware接口
// Environment: 用于整个Spring环境相关的接口,属性...
// EnvironmentAware: 用于需要Environment参数的回调
// EmbeddedValueResolver: 用于需要使用占位符解析器
// EmbeddedValueResolverAware: 用于需要使用占位符解析器的回调
// ResourceLoader: 用于处理Resource资源相关Loader,ApplicationContext是该类型
// ResourceLoaderAware: 用于处理Resource资源相关Loader的回调
// ApplicationEventPublisher用于发布事件的对象,ApplicationContext是该类型
// ApplicationEventPublisherAware: 用于发布事件的对象的回调
// MessageSource: 用于国际化消息处理,ApplicationContext是该类型
// MessageSourceAware: 用于国际化消息处理的对象回调
// ApplicationContext: Spring容器上下文
// ApplicationContextAware: 获取Spring容器上下文的回调
// BeanNameAware: 获取某个bean的BeanName回调,因为有些BeanName是自动生成的
// BeanClassLoaderAware: 获取Bean的类加载器的回调
// BeanFactory: 创建Bean的工厂接口
// BeanFactoryAware: 获取Bean工厂的接口回调
// Environment.systemProperties: 所有系统变量的集合,会自动注册为Bean
// Environment.systemEnvironment: 所有系统环境变量的集合,会自动注册为Bean
// ApplicationEventMulticaster: 事件分发器接口
// ApplicationListener: 事件监听器接口
// ConversionService: 类型转换服务接口
// FactoryBean: 本身是一个@Bean,而且是一个可以提供高度定制的Bean的工厂
// SmartFactoryBean: 是一个FactoryBean,提供了判断返回的bean是否是原型的,并且还可以设置该Bean是否立即初始化
// LifecycleProcessor: 通过实现Lifecycle接口的bean可以在Spring容器启动时自动初始化
// 而LifecycleProcessor负责调用这些bean的start()方法来启动它们
// 当 Spring容器关闭时,LifecycleProcessor会调用这些bean的stop()方法来停止它们
// 以确保在Spring容器销毁时,生命周期bean能够正确地执行清理操作
// 其中,AbstractApplicationContext就是Lifecycle的实现,会在start方法中publishEvent(new ContextStartedEvent(this));
// 在stop方法中publishEvent(new ContextStoppedEvent(this));
// InitializingBean: 对象初始化之后的回调方法
// DisposableBean: 对象销毁之前的回调方法
// Scope: 自定义作用域的接口
// Bean相关的后置处理器
// BeanDefinitionRegistry: 用于注册BeanDefinition的接口
// BeanFactoryPostProcessor: 用于修改BeanFactory中的BeanDefinition
// BeanDefinitionRegistryPostProcessor: 它也是一个BeanFactoryPostProcessor
// 它还可以手动注册BeanDefinition
// BeanPostProcessor: Bean的后置处理器,可以用于控制对象初始化的前后操作,此时对象已经实例化
// MergedBeanDefinitionPostProcessor: 它也是一个BeanPostProcessor
// 它还可以修改合并之后BeanDefinition的信息,在BD合并之后可以进行的操作
// 一般是系统内部使用,我们不使用
// InstantiationAwareBeanPostProcessor: 控制实例化的后置处理器,他也是一个BeanPostProcessor
// 它还可以控制对象实例化前后的逻辑,并且还可以操作处理bean的属性
// DestructionAwareBeanPostProcessor: 它也是一个BeanPostProcessor,控制Bean销毁之前处理的逻辑
// SmartInitializingSingleton: 所有的单例Bean都初始化完成之后进行的回调,例如@EventListener和@Schedule就是这样处理的
// SmartInstantiationAwareBeanPostProcessor: 他是一个InstantiationAwareBeanPostProcessor,它可以确定Bean的类型
// 还可以推断构造方法,确定哪些构造方法可用,还可以获取代理对象
// 一些后置处理器的执行顺序和bean的bean的生命周期整理
// 1. 容器刷新
// 2. 执行实现了BeanDefinitionRegistryPostProcessor接口的postProcessBeanDefinitionRegistry回调,执行用户手动添加的BeanDefinition
// 3. 执行实现了BeanFactoryPostProcessor接口的postProcessBeanFactory回调
// 4. 执行实现了InstantiationAwareBeanPostProcessor接口的postProcessBeforeInstantiation回调,bean实例化前需要做的事
// 5. 执行实现了SmartInstantiationAwareBeanPostProcessor接口的determineCandidateConstructors方法,确定构造方法
// 6. 对象实例化
// 7. 执行实现了MergedBeanDefinitionPostProcessor接口的postProcessMergedBeanDefinition方法,系统内部使用
// 8. 执行实现了SmartInstantiationAwareBeanPostProcessor接口的getEarlyBeanReference方法,是否需要提前创建代理对象
// 9. 执行实现了InstantiationAwareBeanPostProcessor接口的postProcessAfterInstantiation方法,实例化之后需要做的事
// 10. 执行实现了InstantiationAwareBeanPostProcessor接口的postProcessProperties方法,属性注入需要处理的事情
// 11. 执行Aware方法接口,invokeAwareMethods:BeanNameAware,BeanClassLoaderAware,BeanFactoryAware,将对应的参数给需要的回调接口
// 12. 执行实现了BeanPostProcessor接口的postProcessBeforeInitialization方法,初始化之前执行的事情
// 12.1. ApplicationContextAwareProcessor处理invokeAwareInterfaces,ApplicationContextAware,EnvironmentAware,EmbeddedValueResolverAware
// MessageSourceAware,ApplicationEventPublisherAware,ResourceLoaderAware
// 将对应的参数给需要的回调接口
// 12.2. 执行@PostConstruct标注的方法
// 13. 执行实现了InitializingBean的afterPropertiesSet的回调,接着执行自定义的init-method
// 14. 执行实现了BeanPostProcessor接口的postProcessAfterInitialization方法
// 14.1. 正常情况下的代理对象就是在这里创建的AbstractAutoProxyCreator
// 15. 容器关闭,销毁Bean
}
Spring生命周期流程整理,回调接口集合和核心类,后置处理器类
最新推荐文章于 2025-07-17 22:47:06 发布
博客围绕Spring和Java在后端开发中的应用展开,虽未给出具体内容,但可知聚焦于后端技术领域,利用Spring框架和Java语言进行开发。
149

被折叠的 条评论
为什么被折叠?



