SpringBoot自动装配原理简单分析
  TEZNKK3IfmPf 18天前 19 0

说明:在SpringBoot项目中,我们添加了许许多多的注解,这些注解提高了开发效率。这是因为SpringBoot在项目启动时,帮我们自动装配了大量的Bean对象,可以通过分析源码查看自动装配的大致原理。

第一步:@SpringBootApplication

进入到启动类中的@SpringBootApplication注解中,该注解里面有七个注解,上面四个是元注解,无需理会,下面三个注解分别表示:

@SpringBootConfiguration:该注解内包含@Configuration注解,表明该类是一个配置类;

@EnableAutoConfiguration:自动装配注解;

@ComponentScan():组件扫描注解,项目启动时,会扫码启动类平级的类和子包中的类;

SpringBoot自动装配原理简单分析

可以看出,这三个注解中@EnableAutoConfiguration是核心,进一步分析

第二步:@EnableAutoConfiguration

该注解内,使用@Import()导入了一个自动装配选择器类(AutoConfigurationImportSelector),点开这个类分析

SpringBoot自动装配原理简单分析

第三步:AutoConfigurationImportSelector.class

进入到这个类中,可以找到一个自动装配配置的具体实现方法(getCandidateConfigurations()),进入该方法内分析

SpringBoot自动装配原理简单分析

第四步:getCandidateConfigurations()

该方法下面有一段提示,表示该方法的内容来自于这两个文件中的其中一个,并且该方法返回值类型是字符串类型的集合
SpringBoot自动装配原理简单分析

第五步:在依赖管理中找到对应的文件

找到对应上面方法中提示的对应文件,可以知道该文件内存的是各种Bean对象的全限定类名

SpringBoot自动装配原理简单分析

(所有Bean对象的全限定类名)

SpringBoot自动装配原理简单分析

总结

SpringBoot自动配置原理大致如下:@SpringBootApplication注解中的,@EnableAutoConfiguration注解中的@Import注解,会自动装配AutoConfigurationImportSelector类,而该类中会执行一个getCandidateConfigurations()方法,该方法会读取SpringBoot文件中的一个文件(在Spring2.7.5 以前是spring.factories),该文件内存放着大量的Bean对象的全限定类名。在项目启动时,会有选择性的自动装配这些对象到IOC容器中。

之所以说有选择,是因为在源码中,还有一系列的选择注解,只有符合条件的对象才会被自动装配,例如以下三个:

@ConditionalOnClass:判断环境中有对应字节码文件,才注册bean到IOC容器

@ConditionalOnMissingBean:判断环境中没有对应的bean(类型或名称),才注册bean到IOC容器

@ConditionalOnProperty:判断配置文件中有对应属性和值,才注册bean到IOC容器

SpringBoot自动装配原理简单分析

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 18天前 0

暂无评论

推荐阅读
TEZNKK3IfmPf