1.条件类注解
@Conditionxxx
根据不同的条件加载不同的 Bean 到容器中,用来限制配置类是否生效或者某个bean是否需要注入
@ConditionalOnBean:
当容器存在指定的 bean 时才会被加载
@ConditionalOnMissingBean:
当容器不存在指定的 bean 时才会被加载
@ConditionalOnClass :
当类路径下(classpath)存在指定 class 时加载
@ConditionalOnMissingClass:
当类路径下(classpath)不存在存在指定 class 时加载
2.SpringBoot 核心注解
@SpringBootApplication:
Spring Boot 的核心注解,标注于启动类上
启用Spring Boot的自动配置和组件扫描机制。
1.@SpringBootConfiguration -
相当于 @Configuration,标识该类是一个配置类
会被Spring容器进行管理,其中可以定义各种Bean的创建和配置
2.@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class)
, @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class)
})
启用组件扫描机制,自动扫描指定包及其子包中的组件
excludeFilters:排除指定类型的组件
TypeExcludeFilter:springBoot对外提供的扩展类,可以供我们去按照我们的方式进行排除,只要继承该类并重写match方法,在该方法内部进行相应的处理即可
AutoConfigurationExcludeFilter :当某个类的包含有 @Configuration 注解、并且该类的类名和默认自动装配的类名相同的话,进行排除扫描
3.@EnableAutoConfiguration:
启用Spring Boot 的自动配置机制
4.@Import(AutoConfigurationImportSelector.class)
向容器中注入一个 AutoConfigurationImportSelector 组件,调用该类的 selectImports() 方法来自动配置 Spring Boot 提供的自动配置类
5.@AutoConfigurationPackage
注解内部主要由一个 @Import 注解向 Spring 容器导入 AutoConfigurationPackages 的静态内部类 Registrar 组件。
利用 Registrar.registerBeanDefinitions(方法) 给容器中批量注入一系列组件。通过获取标注该注解的类的元信息得到该类所在的包名,即得到启动类的包名,将在该包下的组件注册到容器中去。