SpringBoot自动配置原理

通过点进SpringBoot的主启动入口的@SpringBootApplication可以看到两个注解:

@SpringBootConfiguration
@EnableAutoConfiguration

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//主程序入口
//这个注解表示这是一个springboot应用,并且导入了自动配置类
@SpringBootApplication
public class SpringBootStudyApplication {
//SpringApplication.run 启动springboot应用
    public static void main(String[] args) {
        SpringApplication.run(SpringBootStudyApplication.class, args);
    }

}
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration //这个
@EnableAutoConfiguration //这个
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)

@SpringBootApplication 有两个作用

   一是 通过@SpringBootConfiguration 表示这是一个springboot应用
    二是通过@EnableAutoConfiguration 自动装配所有的配置文件
    EnableAutoConfiguration通过AutoConfigurationImportSelector下的getCandidateConfigurations方法通过加载类名的方式加载META-INF/spring.factories下的自动配置类,并且配置为一个List<String> configurations 并且返回。所以在启动主程序入口时,springboot便自动加载了所有的自动配置类(如spring-boot-start-web包括了所有的springmvc的功能)。但是并不是所有被加载的配置文件都生效,只有在相关启动器被配置时,这个配置文件在会生效。

yaml可以对已经装配的自动配置类,进行配置。如设置端口等

springboot中有大量的自动配置类在启动应用时加载到IOC容器中,通过配置启动器也就是Spring-boot-start-xxx来启用这些自动配置类XXXAutoConfigurartion,XXXProperties是与这个自动配置类绑定的一个配置类。XXXProperties中有许多会用到的属性,我们可以通过yaml配置文件,对其进行配置。

XXXAutoConfigurartion(自动配置类,通过ConditionalOnXXX判断条件决定是否是这个自动配置类生效)->XXXProperties(内部有属性可以使用,或者使用Yaml可以对这个自动配置类进行配置,这个XXXProperties,通过Prefix=”xxx.xxx“,与yaml配置文件进行绑定)

 

 这只是自己第一次学习SpringBoot自动装配原理的,自己的第一次浅理解。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值