码迷,mamicode.com
首页 > 其他好文 > 详细

@Import底层实现原理

时间:2021-01-06 12:14:57      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:str   rgba   config   类图   pat   his   mil   load   proxy   

日常项目中,使用注解@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底层实现原理

标签:str   rgba   config   类图   pat   his   mil   load   proxy   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!