首页 > 其他 > 详细

@Import底层实现原理

时间:2021-01-03 19:08:25      阅读:47      评论:0      收藏:0      [点我收藏+]

日常项目中,使用注解@EnableAspectJAutoProxy @EnableAsync

这里面涉及对@Import注解支撑的底层原理:ConfigurationClassPostProcessor 这个类,说到这个类,我们要先从SpringBoot启动流程说起。

首先,看springboot启动流程中的一步:

SpringApplication对象的run方法,创建上下文context = createApplicationContext(); 这一步,会创建AnnotationConfigServletWebServerApplicationContext对象:

contextClass = Class.forName(DEFAULT_SERVLET_WEB_CONTEXT_CLASS);

(ConfigurableApplicationContext) BeanUtils.instantiateClass(contextClass);

 

类图关系如下:

技术分享图片

 

 

 AnnotationConfigServletWebServerApplicationContext类有两个重要的属性:private final AnnotatedBeanDefinitionReader reader;  private final ClassPathBeanDefinitionScanner scanner;

创建AnnotationConfigServletWebServerApplicationContext对象时, 调用构造方法,会初始化该对象的上面两个属性。

见:

public AnnotationConfigServletWebServerApplicationContext() {
this.reader = new AnnotatedBeanDefinitionReader(this);
this.scanner = new ClassPathBeanDefinitionScanner(this);
}

new AnnotatedBeanDefinitionReader(this)对象时,里面会涉及AnnotatedBeanDefinitionReader构造函数

AnnotatedBeanDefinitionReader构造函数AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);

 

@Import底层实现原理

原文:https://www.cnblogs.com/kobe-lin/p/14225822.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!