SpringBoot自动配置原理

1、springboot源码常用注解

1、组合注解:

元注解:可以注解到别的注解上的注解

组合注解:被注解的注解就是组合注解

2、@Value:就相当于传统的xml配置文件中的Value字段
@Value("张三")
private String name;
3、@ConfigurationProperties

我们需要取n个配置项,使用@Value一个一个来配置,显得十分low,我们可以是使用@ConfigurationProperties。标有@Configuration Properties的类所有属性和配置文件中的配置文件项进行绑定,绑定之后就可以通过这个类访问全局配置文件中的属性值了

@ConfigurationProperties有一个prefix参数,主要用来指定该配置项在配置文件中的前缀
4、@Import

@Import注解支持导入普通的Java类,并将声明成一个Bean。主要用于将多个分散的javacongfig配置类融合成一个更大的javaConfig

@Import的三种使用方式:

​ 直接导入普通的Java类

@Import(Person.calss)

​ 配合自定义的ImportSelector 使用

ImportSelector是一个接口,该接口只有一个selectimports方法,用于返回全类名数组。所以利用该特性我们可以给容器导入n个Bean

​ 配合 ImportBe’an’DefinitionRegistrar 使用

importBeanDefinitionRegistrar也是一个接口,它可以手动注册bean到容器中,从而我们可以对类个性化使用(需要搭配@Import和@Configuration 一起使用)
5、@Conditional

@Condition注解可以实现只有在特定条件满足时才启动一些配置

Condition的matcher方法返回true,配置类会生效,如果返回false,则配置类不会使用

2、springboot启动过程

  • ApplicationContextInitializer
  • ApplicationRunner
  • CommandLineRunner
  • SpringApplicationRunListener

两大步骤:创建SpringApplication对象、运行run方法

总结:run阶段主要是回调4个监听器中的方法与加载项目中组件到IOC容器中,而所有需要回调的监听器都是从类路径下META-INF/Spring.factories 中获取。

3、springboot自动配置原理

1、@SpringBootConfiguration 注解

@Spring Boot Configuration标注在某个类上说明:这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类main方法来启动SpringBoot应用

@SpringBootConfiguration是一个组合注解,组合了三个注解:

​ @SpringBootConfiguration:该注解表示这是一个SpringBoot的主配置类,其实他就是一个Configuration注解

​ @ComponentScan:开启组件扫描

​ @EnableAutoConfiguration:开启自动配置

2、@EnableAutoConfiguration 注解
定义:
@AutoConfigurationPackage 
@Import({AutoConfigurationImportSelector.class}) 
public @interface EnableAutoConfiguration {

@AutoConfigurationPackage

​ 就是一个@Import注解,@Import({Registrar.class})导入了一个Registrar组件

一句话:@AutoConfigurationPackage注解就是将主配置类(@SpringBootConfiguration标注的类)的所在包以及下面的所有子包里面的组件扫描到spring容器中。所以说默认情况下,主配置包以外的包扫描不到
3、配置类导入规则
4、小结

1、SpringBoot启动会加载大量的自动配置类

2、我们看需要的功能有没有Spring Boot默认写好的自动配置类

3、我们在来看这个自动配置类到底配置了那些组件(只要我们要用的组件有,我们就不需要在来配置了)

4、给容器中自动配置类添加组件的时候,会从配置文件中获取某些属性,我们就可以在配置文件中指定这些属性的值

​ xxxAutoConfiguration:自动配置类给容器中添加组件

​ xxxAutoPerpertoes:封装配置文件中的属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值