使用Conditional

    Spring本身提供了条件装配,但是要自己编写比较复杂的Condition来做判断,比较麻烦。Spring Boot则为我们准备好了几个非常有用的条件:

    • @ConditionalOnProperty:如果有指定的配置,条件生效;
    • @ConditionalOnBean:如果有指定的Bean,条件生效;
    • @ConditionalOnMissingClass:如果没有指定的Class,条件生效;
    • @ConditionalOnWebApplication:在Web环境中条件生效;

    我们以最常用的@ConditionalOnProperty为例,把上一节的StorageService改写如下。首先,定义配置storage.type=xxx,用来判断条件,默认为:

    设定为aws时,启用AwsStorageService

    设定为时,启用AliyunStorageService

    可见,Spring Boot提供的条件装配使得应用程序更加具有灵活性。

    从下载练习:使用Spring Boot提供的条件装配 (推荐使用快速下载)

    使用Conditional - 图1