使用Conditional
Spring本身提供了条件装配,但是要自己编写比较复杂的Condition
来做判断,比较麻烦。Spring Boot则为我们准备好了几个非常有用的条件:
- @ConditionalOnProperty:如果有指定的配置,条件生效;
- @ConditionalOnBean:如果有指定的Bean,条件生效;
- @ConditionalOnMissingClass:如果没有指定的Class,条件生效;
- @ConditionalOnWebApplication:在Web环境中条件生效;
我们以最常用的@ConditionalOnProperty
为例,把上一节的StorageService
改写如下。首先,定义配置storage.type=xxx
,用来判断条件,默认为:
设定为aws
时,启用AwsStorageService
:
设定为时,启用AliyunStorageService
:
可见,Spring Boot提供的条件装配使得应用程序更加具有灵活性。
从下载练习:使用Spring Boot提供的条件装配 (推荐使用快速下载)