美文网首页
@ConditionalOnProperty注解

@ConditionalOnProperty注解

作者: AC编程 | 来源:发表于2023-05-04 10:43 被阅读0次

    一、@ConditionalOnProperty作用及用法

    在Spring Boot中有时候需要控制配置类是否生效,可以使用@ConditionalOnProperty注解来控制@Configuration是否生效。

    通过其两个属性name以及havingValue来实现的,其中name用来从application.properties中读取某个属性值。

    • 如果该值为空,则返回false;
    • 如果值不为空,则将该值与havingValue指定的值进行比较,如果一样则返回true;否则返回false。
    • 如果返回值为false,则该configuration不生效;为true则生效。

    二、@ConditionalOnProperty的功能

    它主要是通过自身的两个属性来控制自动配置是否生效,这两个属性分别是name、havingValue。只有当配置文件(application.properties或者bootstrap.yml)中和name相同的属性的值和注解上havingValue的值相同时,该配置文件才会生效,如下方代码:

    @ConditionalOnProperty(value = "muyichen.auth.test", havingValue = "true")
    @Component
    public class AuthorizationFilterImpl implements AuthorizationFilter {
        //具体的过滤逻辑
    }
    

    配置文件

    muyichen.auth.test=true
    

    三、跳坑

    3.1 问题描述

    尝试给两个以上的过滤器添加该属性时,应用程序启动报错。

    3.2 解决方案

    可以给某个主要的配置类加上@Primary注解来标示出该配置类是主配置类,当其它配置类与该类冲突时,以该类为主。这样就可以解决上述问题了。

    相关文章

      网友评论

          本文标题:@ConditionalOnProperty注解

          本文链接:https://www.haomeiwen.com/subject/fhjtsdtx.html