SpringBoot自动配置原理

SpringBoot的自动配置流程

在主启动类上添加了@SpringBootApplication注解

@SpringBootApplication这个注解组合了@EnableAutoConfiguration注解(顾名思义,中文翻译就是启用自动配置)

@EnableAutoConfiguration注解又组合了我们的@Import注解(怎么样,熟悉吗,import ...),并且导入了AutoConfigurationImportSelector这个类

而AutoConfigurationImportSelector这个类呢,实现了selectImports这个方法,selectImports这个方法经过一层一层的调用,最终会读取META-INF目录下后缀名为imports的文件(这里要注意SpringBoot2.7以前的版本是读取的spring.factories文件)

在读取到全类名之后,会解析注册条件,也就是@Conditional以及其衍生的注解,把满足注册条件的Bean对象自动注入到IOC容器中

以ServletWebServerFactoryAutoConfiguration为例

这个类上面的条件注解,就是生效的条件,比如说是web应用,Servlet等等时就会生效

@Import注解导入的东西是Tomcat,Jetty,Undertow一些web容器

​
BeanPostProcessorsRegistrar.class, 

ServletWebServerFactoryConfiguration.EmbeddedTomcat.class, 

ServletWebServerFactoryConfiguration.EmbeddedJetty.class, 

ServletWebServerFactoryConfiguration.EmbeddedUndertow.class

​

以EmbeddedJetty为例

@ConditionalOnClass({Servlet.class, Server.class, Loader.class,WebAppContext.class}),这个条件注解表示你的类路径下有Jetty的依赖,即导入了Jetty的jar包才会生效,EmbeddedTomcat.class、EmbeddedUndertow.class也同理,但是只能有一个,导入了Jetty的jar包就不能导入其它的,不然会报错。

这里返回JettyServletWebServerFactory这个类:

点进去会发现继承了

AbstractServletWebServerFactory类,点进去后发现AbstractServletWebServerFactory类又继承了AbstractConfigurableWebServerFactory这个类

进入AbstractConfigurableWebServerFactory类就会看到我们所熟悉的8080端口啦

流程视频如下

自动配置原理

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值