原文地址:http://www.baeldung.com/spring-boot-annotations 此篇为译文,由于英语水平有限,可能对原文的理解有误,欢迎指正,不甚感激!
1. 概览
Spring Boot的自动配置功能使创建Spring配置变得非常容易。
在这个入门教程,我们将要探讨Spring Boot相关的注解,其注解来自于两个包:org.springframework.boot.autoconfigure
和org.springframework.boot.autoconfigure.condition
。
2. @SpringBootApplication
我们使用这个注解在Spring Boot应用中创建一个入口类(main class):
|
|
@SpringBootApplication
注解封装了@Configuration
、@EnableAutoConfiguration
和@ComponentScan
这三个注解的功能和默认属性。
3. @EnableAutoConfiguration
@EnableAutoConfiguration
注解就像它的名字一样:启用自动注解。这意味着Spring Boot会在其类路径中查找并且自动配置bean,然后自动应用它们。
Note:我们必须同时使用@Configuration
注解:
|
|
4. Auto-Configuration条件注解
通常情况下,当我们编写自定义自动配置(auto-configurations)的时候,我们想要Spring有条件的使用它们,我们可以使用本节中介绍的注解来实现这一点。
我们可以将本节中介绍的注释放置在@Configuration
类或@Bean
方法上。
在接下来的部分中,我将仅仅介绍基础的相关概念,需要更进一步的了解,请查阅这篇文章。
4.1. @ConditionalOnClass
与@ConditionalOnMissingClass
使用这个条件注解,Spring会根据注解参数中传入的类存在与否,来判断是否使用这个@Configuration
类。(博主注:@ConditionalOnClass({Source.class, Data.class})
表示当Source
和Data
这两个类存在的时候,才使用被标记的类,@ConditionalOnMissingClass
则正好相反。)
|
|
4.2. @ConditionalOnBean
与@ConditionalOnMissingBean
当我们想使用一个具体的bean是否存在作为特定条件的时候,就可以使用这两个注解:
|
|
4.3. @ConditionalOnProperty
使用该注解,我们可以为属性(properties)的值设置一个特定条件:
|
|
4.4. @ConditionalOnResource
我们可以使用这个注解,让Spring在指定的资源存在的时候才使用被标注的定义:
|
|
4.5. @ConditionalOnWebApplication
与@ConditionalOnNotWebApplication
通过这个注解,我们可以设置一个条件,当前的应用是否是一个web应用:
|
|
4.6. @ConditionalExpression
在复杂的情况下我们可以使用该注解,当SpEL表达式的结果为true
的时候,Spring才会使用被标注的定义:
|
|
4.7. @Conditional
甚至在更复杂的条件下,我们可以创建一个自定义的条件注解,@Conditional
会告诉Spring使用这个自定义的条件:
|
|
5. 总结
在本篇中,我们展示了一个概览,如何在微调自动配置,对自动配置设置一个条件。
同样的,本片中的示例代码可以在我们的GitHub上获取。