SpringBoot中@EnableAutoConfiguration注解原理解析

顾名思义,@EnableAutoConfiguration注解是一个使允许自动配置的开关,那他又是怎样自动配置的,配置的又是什么呢?接下来让我们进入源码中进行分析:
首先进入@EnableAutoConfiguration的内部:
@EnableAutoConfiguration注解
可以看到AutoConfigurationPackage注解 他的作用就是将添加该注解的类所在的package 作为 自动配置package 进行管理,也就是说当SpringBoot应用启动时默认会将启动类所在的package作为自动配置的package。
这里我们主要来探讨一下@Import注解 该注解的作用就是在当前配置中添加其他的配置,这里添加的是autoconfigurationimportSelector,我们进入该类的内部看一看:
AutoconfigurationImportSelector配置类
在内部我们找到getCandiateConfigurations方法,我们可以看到绿色字体中的错误提示信息:No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
翻译过来就是:在META-INF/spring.factories中没有找到自动配置类。如果使用自定义打包,请确保该文件是正确的。
默认情况下META-INF/spring.factories就是在当前类所在的包下,而这个包在哪里呢?我们翻到该类最上面可以看到在org.springframework.boot.autoconfigure包下,然后我们在依赖中找呀找

我们打开这个spring.factories来看一看
在这里插入图片描述

可以看到里面都是一些类似于properties的键值对形式
这些类的全包名都是有命名规则的 结尾都是 功能名称.autoconfiguration
这些都是完成自动配置的功能类
我们找一个有代表性的看一下 servletWebFactoryAutoConfiguration
servletWebFactoryAutoConfiguration可以看到内部有一个注解@EnableCofigurationProperties 这个注解的作用就是加载配置文件进行相应的配置,我们进入ServerProperties中
serverProperties可以看到@configurationProperties注解中配置了前缀server,这个类的作用就是完成相应的配置加载的 真正的默认配置在spring-configuration-metadata.json文件中 在该配置文件中我们可以搜一下server.port
在这里插入图片描述总结:根据上述例子说明该注解的作用就是先在spring-configuration=metadata.json文件中进行默认配置,然后在ServerProperties类中加载该默认配置,再从servletWebFactoryAutoConfiguration类中进行一个引入加载完的配置类,最终在spring.factories中加载进行加载,自动配置就加载好了
我们也可以对定义配置文件对默认配置进行覆盖

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值