Spring Boot核心-SpringBootApplication自动配置原理

接着说@SpringBootApplication

知道了这是一个组合注解,用在启动类上,然后main函数中SpringApplication.run方法就可以

@SpringBootApplication 分为:

  • @SpringBootConfiguration springboot项目的配置注解,也是组合注解
    建议springboot中使用此注解而非@Configuration

  • @EnableAutoConfiguration 启动自动配置,系统根据项目依赖的jar包自动配置。
    就比如pom文件引入spring-boot-start-web依赖,项目会自动加入tomcat和SpringMVC

  • @ComponentScan 扫描配置,默认扫描@SpringBootApplication所在类同级以及子包
    所以最好放在项目包下面,防止某些配置无法被扫描到

    如果不想自动配置某一项,使用@SpringBootApplication的exclude参数
    like:@SpringBootApplication(exclude={xxx.class}

    再来看一次SpringApplication.run做了什么?是怎么自动配置的?配置文件呢?

    在这里插入图片描述

    首先run方法实例化SpringApplication对象 然后调用SpringApplication的run方法

在这里插入图片描述
在这里插入图片描述

SpringApplication的run方法中继续调用了 getSpringFactoriesInstances 方法

在这里插入图片描述

getSpringFactoriesInstances 方法继续调用 loadFactoryNames

点进去

在这里插入图片描述

最终看到一个 “META-INF/spring.factories” 的资源文件

最终springboot是通过加载 “META-INF/spring.factories” 文件进行自动配置的

通过源码分析可以看出,SpringBoot是通过SpringFactoryLoader的 loadFactoryNames 方法读取spring.factories文件的
SpringFactoryLoader主要功能是从指定的配置文件加载配置,配合@EnableAutoConfiguration使用,根据EnableAutoConfiguration查找到一组@Configuration类 作为配置文件

所以@SpringBootApplication的自动配置原理便是:

  • 从classpath中搜寻所有的spring.factories配置文件,通过反射将其中@EnableAutoConfiguration对应的配置项实例化为对应>的IoC容器,然后汇总并加载到Spring框架的Ioc容器中
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值