Spring Boot自动配置笔记

目录

 

@SpringBootApplication

@SpringBootConfiguration

@EnableAutoConfiguration

@AutoConfigurationnPackage

@Import(EnableAutoConfigurationImportSelector.class)


@SpringBootApplication

@SpringBootApplication标注在SpringBoot主配置类上,SpringBoot会运行这个类的main方法来启动Spring Boot应用。

@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}
)}
)
public @interface SpringBootApplication {
   
   

@SpringBootConfiguration

@SpringBootConfiguration标注在SpringBoot配置类上。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
}

@Configuration标注Spring配置类,配置类也是容器中的一个组件。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
    String value() default "";
}

@EnableAutoConfiguration

开启SpringBoot自动控制功能。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({EnableAutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
   
   

@AutoConfigurationnPackage

将主配置类(@SpringBootApplication标注的类)所在包及下面所有子包里面的所有组件扫描到Spring容器中。

@Import({Registrar.class})

给容器中导入一个组件,导入的组件由Import后面的类决定。

@Import(EnableAutoConfigurationImportSelector.class)

导入哪些组件的选择器。将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器中。

会给容器中导入很多的自动配置类(xxxAutoConfiguration),用来给容器中导入这个场景需要的所有组件并配置好这些组件。例如:org.springframework.boot_autoconfigure.aop.AopAutoConfiguration等。

SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);

SpringBoot在启动时从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置。

J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar。

猜你喜欢

转载自blog.csdn.net/Nemoosi/article/details/107740950