@EnableAutoConfiguration
Spring Boot自动配置(auto-configuration):尝试根据你添加的jar依赖自动配置你的Spring应用。例如,如果你的classpath下存在HSQLDB,并且你没有手动配置任何数据库连接beans,那么我们将自动配置一个内存型(in-memory)数据库”。你可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。如果发现应用了你不想要的特定自动配置类,你可以使用@EnableAutoConfiguration注解的排除属性来禁用它们。
@ComponentScan
表示将该类自动发现(扫描)并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。我们经常使用@ComponentScan注解搜索beans,并结合@Autowired注解导入。如果没有配置的话,Spring Boot会扫描启动类所在包下以及子包下的使用了@Service,@Repository等注解的类。
@Configuration
相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。
@Import
用来导入其他配置类。
@ImportResource
用来加载xml配置文件。
@Qualifier
- @Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者
- @Qualifier注解了,qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,我们修改调用代码,
- 添加@Qualifier注解,需要注意的是@Qualifier的参数名称必须为我们之前定义@Bean注解的名称之一
@Primary
- 主要的 当IOC容器里面有多个对象里,那么会有冲突,可以使用这个注解来标记它为主要的使用对象
@Conditional派生注解
- @ConditionalOnJava
- 系统的java版本是否符合要求
- @ConditionalOnBean
- 容器中存在指定Bean;
- @ConditionalOnMissingBean
- 容器中不存在指定Bean;
- @ConditionalOnExpression
- 满足SpEL表达式指定
- @ConditionalOnClass
- 系统中有指定的类
- @ConditionalOnMissingClass
- 系统中没有指定的类
- @ConditionalOnSingleCandidate
- 容器中只有一个指定的Bean,或者这个Bean是首选Bean
- @ConditionalOnProperty
- 系统中指定的属性是否有指定的值
- @ConditionalOnResource
- 类路径下是否存在指定资源文件
- @ConditionalOnWebApplication
- 当前是web环境
- @ConditionalOnNotWebApplication
- 当前不是web环境
- @ConditionalOnJndi
- JNDI存在指定项
所有的条件配置之间的关系是并且的关系