关于@ConditionalOnProperty的使用

 问题描述

            项目整合了Swagger2,想弄一个开关,在本地开发阶段:

            可以通过  http://localhost:8080swagger-ui.html 调试接口;测试,正式环境不可访问;

解决方案

           使用spring boot 的:@ConditionalOnProperty标签可以控制被@Configuration注释的配置类 是否生效 

具体代码:         

@Configuration
@ConditionalOnProperty(prefix = "swagger", value = {"enable"}, havingValue = "true")
@EnableSwagger2
public class SwaggerConfig {} 
  • 以下代码为ConditionalOnProperty注解的属性说明:
    @Retention(RetentionPolicy.RUNTIME)
    @Target({ ElementType.TYPE, ElementType.METHOD })
    @Documented
    @Conditional(OnPropertyCondition.class)
    public @interface ConditionalOnProperty {
       //在application.properties中自定义属性的名称:例如enable
       String[] value() default {};
    
       //在application.properties中自定义属性的前缀:例如swagger; 可以拼接value和name配置的值
       String prefix() default "";
     
       //在application.properties中自定义属性的全称:例如swagger.enable或者enable
       String[] name() default {};
      
       //用来在application.properties中自定义属性的值进行比较,若想同:则Configuration配置类生效,反之不生效;
       String havingValue() default "";
      
       boolean matchIfMissing() default false;
      
       boolean relaxedNames() default true;
    
    }
    
  • application.properties中添加对应配置:
    #swagger开关: true 打开,false 关闭
    swagger.enable = true
  • 三种配置效果想同:
  • @ConditionalOnProperty(prefix = "swagger",name = {"enable"},havingValue = "true")
  • @ConditionalOnProperty(name = {"swagger.enable"},havingValue = "true")
  • @ConditionalOnProperty(prefix = "swagger",value = {"enable"},havingValue = "true")

 

知识笔记!有不对的地方,欢迎指正!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值