首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Boot自动配置原理

Spring Boot自动配置原理

作者头像
Java技术债务
发布2022-08-09 12:03:04
发布2022-08-09 12:03:04
61300
代码可运行
举报
文章被收录于专栏:Java技术债务Java技术债务
运行总次数:0
代码可运行

目录

@SpringBootApplication

@SpringBootApplication注解由@SpringBootConfiguration@ComponentScan@EnableAutoConfiguration三个注解组成

所以SpringBoot入口类可以写成:

代码语言:javascript
代码运行次数:0
运行
复制
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
public class KnowledgeBaseApplication {

    public static void main(String[] args) {
        SpringApplication.run(KnowledgeBaseApplication.class, args);
    }
}

@EnableAutoConfiguration

我们知道SpringBoot可以帮我们减少很多的配置,也肯定听过“约定大于配置”这么一句话,那SpringBoot是怎么做的呢?其实靠的就是@EnableAutoConfiguration注解。

简单来说,这个注解可以帮助我们自动载入应用程序所需要的所有默认配置

@AutoConfigurationPackage

图中所示依靠@Import注解。点进去看重要的代码是:

代码语言:javascript
代码运行次数:0
运行
复制
@Override
public void registerBeanDefinitions(AnnotationMetadata metadata,
        BeanDefinitionRegistry registry) {
    register(registry, new PackageImport(metadata).getPackageName());
}

默认的情况下就是将:主配置类(@SpringBootApplication)的所在包及其子包里边的组件扫描到Spring容器中。

注意:

@Import

AutoConfigurationImportSelector.class

此时只看到了SpringFactoriesLoader.loadFactoryNames()方法加载

此时可以知道:

  • FACTORIES_RESOURCE_LOCATION的值是META-INF/spring.factories
  • Spring启动的时候会扫描所有jar路径下的META-INF/spring.factories,将其文件包装成Properties对象
  • 从Properties对象获取到key值为EnableAutoConfiguration的数据,然后添加到容器里边。

总结

@SpringBootApplication等同于下面三个注解:

其中@EnableAutoConfiguration是关键(启用自动配置)该注解又通过 @Import 注解导入了AutoConfigurationImportSelector类,在该类中加载 META-INF/spring.factories 的配置信息。然后筛选出以 EnableAutoConfiguration 为 key 的数据,加载到 IOC 容器中,实现自动配置功能!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • @SpringBootApplication
  • @EnableAutoConfiguration
    • @AutoConfigurationPackage
    • @Import
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档