SpringBoot(一)自动配置原理


 

SpringBoot的自动装配原理

 
自动装配主要提供两种主要功能,以下分别介绍两种的实现。

  1. 为每个springboot中要使用的类提供自动配置
  2. 程序员可以通过配置文件,覆盖默认配置,使自定义配置生效

 

1. 提供自动配置

主启动类

//@SpringBootApplication 来标注一个主程序类
//说明这是一个Spring Boot应用
@SpringBootApplication
public class SpringbootApplication {
    
    

   public static void main(String[] args) {
    
    
     //启动一个Spring Boot应用
      SpringApplication.run(SpringbootApplication.class, args);
   }

}

@SpringBootApplication

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

进入这个注解:可以看到上面还有很多其他注解!

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {
    
    @Filter(
    type = FilterType.CUSTOM,
    classes = {
    
    TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {
    
    AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
    
    
    // ......
}
  • @EnableAutoConfiguration : 开启自动配置功能
    以前我们需要自己配置的东西,而现在SpringBoot可以自动帮我们配置 ;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能,这样自动配置才能生效

 

spring.factories - 配置所在

在spring.factories
在这里插入图片描述

结论

  1. SpringBoot在启动的时候从类路径下的spring.factories中获取EnableAutoConfiguration指定的值

  2. 将这些值作为自动配置类导入容器 , 自动配置类就生效 , 帮我们进行自动配置工作;

  3. 整个J2EE的整体解决方案和自动配置都在springboot-autoconfigure的jar包中;
    在这里插入图片描述

  4. 它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration), 就是给容器中导入这个场景需要的所有组件 , 并配置好这些组件 ;

  5. 有了自动配置类 , 免去了我们手动编写配置注入功能组件等的工作;

2.覆盖默认配置

xxxxAutoConfigurartion:自动配置类;给容器中添加组件

xxxxProperties: 封装配置文件中相关属性;

 
@ConditionalOnxxxx 注解 :根据不同的条件判断,如果满足指定的条件,整个配置类里面的配置就会生效

  • 一但这个配置类生效;这个配置类就会给容器中添加各种组件;

  • 这些组件的属性是从对应的properties类中获取的,这些properties类里面的每一个属性又是和我们自定义的配置文件绑定的;

  • 所有在配置文件中能配置的属性都是在xxxxProperties类中封装着;

  • 在配置文件中指定属性,就可以覆盖默认配置;

Guess you like

Origin blog.csdn.net/qq_39304851/article/details/110545022