三、Spring Boot起步依赖和自动配置原理

1、起步依赖

2、自动配置原理


## 1、起步依赖

在SpringBoot项目中所有依赖继承来自spring-boot-starter-parent。
在这里插入图片描述

ctrl+右键进入后。
在这里插入图片描述
在spring-boot-dependencies pom文件中,可以看到该文件管理了所有依赖的版本号,不会产生依赖冲突。
在这里插入图片描述
继承spring-boot-starter-parent的同时,还需要导入相应的spring-boot-starter-web依赖。
在这里插入图片描述
ctrl+鼠标左键进去
在这里插入图片描述
spring-boot-starter-web依赖帮我们导入了web模块所依赖的组件。





2、自动配置原理

使用过SpringBoot的人都知道SpringBoot有两大全局配置文件application.yml和application.properties,在这些配置文件里面可以配置各种各样的参数,那这是怎么实现的,下面的启动类的启动类就一个main方法用来启动SpringBoot和类上有一个注解来标注这是一个SpringBoot应用。

package com.zhou.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication//标注这是一个SpringBoot应用,开启自动配置。
public class SpringbootApplication {

    public static void main(String[] args) {
        //运行SpringBoot
        SpringApplication.run(SpringbootApplication.class, args);
    }

}

既然main方法只是用来运行SpringBoot的那我们点进去 @SpringBootApplication看看,发现有很多注解,主要讲解这两个@SpringBootConfiguration,@EnableAutoConfiguration注解。。
在这里插入图片描述
@SpringBootConfiguration:进入该注解,发现有一个 @Configuration注解,表示这个Spring Boot启动类是一个配置类,最终要被注入到spring容器中。
在这里插入图片描述
点击

进入@EnableAutoConfiguration,@EnableAutoConfiguration是一个符合注解,里面包含@AutoConfigurationPackage,@Import注解。

@AutoConfigurationPackage自动配置包,SpringBoot应用启动时默认会将启动类所在的包扫描到Spring容器中作为自动配置的包。

@Import通过AutoConfigurationImportSelector导入自动配置类,进行自动配置。

在这里插入图片描述

进入**@AutoConfigurationImportSelector**,找到**selectImports()**方法,
**selectImports()方法首先检查是否开启了自动配置类,如果开启了则返回会调用getAutoConfigurationEntry()**获得的自动配置的实体信息。

在这里插入图片描述

**getAutoConfigurationEntry()方法首先会检查是否开启了自动配置类,通过getAttributes()获得返回数组的属性,通过调用getCandidateConfigurations()**方法加载候选配置信息。
在这里插入图片描述

getCandidateConfigurations()方法调用Spring Core包中的loadFactoryNames()方法查询META-INF/spring.factories文件中的信息并返回查询到的信息。
通过
在这里插入图片描述

META-INF/spring.factories下的文件包含大量以…AutoConfiguration结尾的类,文件中声明了具体有哪些自动配置。
在这里插入图片描述
然后把扫描到的这些信息包装成Properties对象。

properties中获取到EnableAutoConfiguration.class类名对应的值,然后把他们添加在容器中。

总结:springboot项目启动时,@SpringBootApplication用在启动类,在SpringApplication.run(…)的内部就会执行selectImports()方法,找到所有JavaConfig自动配置类的全限定名对应的class,然后将所有自动配置类加载到Spring容器中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值