spring扩展接口执行流程
2024-03-20 21:36:14 13 举报
Spring扩展接口即执行流程
作者其他创作
大纲/内容
实例化后调用所有BeanPostProcessor#postProcessAfterInitialization
InitDestroyAnnotationBeanPostProcessor处理@PreDestroySimpleServletPostProcessor处理所有servletScheduledAnnotationBeanPostProcessor取消所有任务ApplicationListenerDetector注销监听器
处理内部方法以及注解依次处理@Component@PropertySources@ComponentScan@Import@ImportResource@Bean
先找close方法,没有找shutdown方法
InstantiationAwareBeanPostProcessor#postProcessProperties在设置属性钱可以修改属性
不会进行后续步骤
InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiationaop解析切面
实例化剩余的所有非延迟加载单利bean
即没有实现接口,也没有指定销毁方法
DisposableBeanAdapter处理销毁方法
InitDestroyAnnotationBeanPostProcessor复制处理@PostConstruct @PreDestroyApplicationListenerDetector预处理@ApplicationListener
ImportBeanDefinitionRegistrar添加bean定义
有代理对象生成
MergedBeanDefinitionPostProcessor#postProcessMergedBeanDefinition合并处理BeanDefinition
实例化Bean
AbstractApplicationContext#invokeBeanFactoryPostProcessors
处理BeanNameAwareBeanClassLoaderAwareBeanFactoryAware
优先先处理所有ImportSelector接口
AbstractAutowireCapableBeanFactory#populateBean
找到所有DestructionAwareBeanPostProcessor通过requiresDestruction方法判断是否在注销Bean是调用该处理器
AbstractAutowireCapableBeanFactory#initializeBean
先调用处理器方法DestructionAwareBeanPostProcessor#postProcessBeforeDestruction
BeanPostProcessor#postProcessAfterInitialization
先处理接口
执行创建bean指定的销毁方法(destroyMethod)
注册所有BeanPostProcessor
各种初始化,创建工厂,扫描bean定义
ConfigurationClassPostProcessor解析@Configuration
关闭容器AbstractApplicationContext#doClose
注册监听器,并发送所有早期事件registerListeners
创建Bean
AbstractAutowireCapableBeanFactory#resolveBeforeInstantiation
AbstractAutoProxyCreatoraop代理生成ScheduledAnnotationBeanPostProcessor处理@Scheduled
通过适配器执行销毁方法DisposableBeanAdapter#destroy
在处理所有DeferredImportSelectorspringboot自动配置使用
返回null则
在实例化前调用所有BeanPostProcessor#postProcessBeforeInitialization
调用接口DisposableBean#destroy
BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry
DisposableBean接口close方法shutdown方法(在clone没有去情况下)
InstantiationAwareBeanPostProcessor#postProcessAfterInstantiation允许在设置Bean之前修改Bean,返回false则不继续进行
AbstractApplicationContext#refresh
销毁所有beanDefaultSingletonBeanRegistry#destroySingletons
AutowiredAnnotationBeanPostProcessor处理@Autowired @Value @Inject
CommonAnnotationBeanPostProcessor注入属性@Resource @WebServiceRef
aop通过该接口注入AspectJAutoProxyRegistrar
PostProcessorRegistrationDelegate#invokeBeanFactoryPostProcessors
主要是处理@PreDestroy
调用BeanDefinition中的init方法
调用进行初始化isInitializingBean#afterPropertiesSet
ServletContextAwareProcessorApplicationContextAwareProcessor处理一堆AwareInitDestroyAnnotationBeanPostProcessor调用初始化方法(PostConstruct)ApplicationListenerDetector处理@ApplicationListenerScheduledAnnotationBeanPostProcessor处理@ScheduledSimpleServletPostProcessor调用Servlet#init
onRefresh
0 条评论
下一页