编程框架-springboot-@SpringBootApplication的探索

背景

如果研究springboot,那么必然要研究它的自动装配,而自动配置的核心如下:

  • SpringbootApplication注解所带动的一系列配置(这里是静态的,当run后进行扫描的时候,就会全部涉列到,本文重点阐述)
  • run方法(启动过程,将来另外的wiki进行阐述)

SpringBootApplication探索过程

总览

在这里插入图片描述

细看

Spring boot必须要做的两件事,做完之后就可以编译运行了。
在这里插入图片描述
看一下SpringBootApplication注解,其中有两个重要的组合注解SpringBootConfiguration和EnableAutoConfiguration
在这里插入图片描述
这里说明了它是一个配置注解
在这里插入图片描述
EnableAutoConfiguration又扩展了两个,这里已经开始涉及到实现类了
在这里插入图片描述
@Import就相当于xml中的Import标签的作用(这里需要再深入一下)??。在AutoConfigurationImportSelector里面有一个非常重要的地方,如下图:
在这里插入图片描述
说明获取候选配置都是从META-INF/spring.factories来的,这种callback的实现,是完全参照的java的spi机制。
来看下spring.factories文件。发现这里预留了全部的回调配置,这里就是spring boot的自动配置核心。spring本身是不能自己配置的,而spring boot官方项目帮我们做了这一点。
在这里插入图片描述
同目录下有个metadata文件,这个是application.properties的默认配置数据文件:
在这里插入图片描述
找一下server.port,是不是很熟悉了
在这里插入图片描述
spring.factories里面把全部的配置都写了,但是在使用中并不是全部都加载,这是怎么控制的呢?我们拿MongoAutoConfiguration来做一个例子,MongoClient为红色,说明没有引入这个类的包,这样就能被@ConditionalOnClass过滤掉
在这里插入图片描述
来看一下WebMvcAutoConfiguration,主要就是用到了@Bean、@ConditionalOnXXX来进行bean的导入
在这里插入图片描述

配置文件相关

配置文件的加载是由listener机制实现的。在spring.factories中配置了你ConfigFileApplicationListener
在这里插入图片描述
在这里能看到我们经常使用的内容,比如application、active等
在这里插入图片描述
debug一下,发现active是default
在这里插入图片描述

评价

SpringBootApplication注解用于完成所有的配置,而具体的配置信息全部来自于application.properties文件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值