ConditionalOnProperty配置swagger不生效问题及解决


Posted in Java/Android onJune 14, 2022

ConditionalOnProperty配置swagger不生效

问题

在正式环境准备关闭Swagger,添加了ConditionalOnProperty注解进行配置,结果发现怎么也无法关闭swagger。

问题原因

@EnableSwagger2在多个地方进行了配置,如下:

1)应用程序处进行了配置

@SpringCloudApplication
@EnableSwagger2  //在应用程序处进行了配置
public class SysApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(SysApplication.class,args);
    }
}

2)swagger处进行了配置

@Configuration
@EnableSwagger2  //在swagger本身配置处进行了配置
@ConditionalOnProperty(value = "swagger.manenabled", havingValue = "true")
public class SwaggerConfig {
}

实际在2)处的配置已经生效,但由于1)处有配置所以造成这个问题。

解决方案

将1)处的配置关闭即可。

@ConditionalOnProperty理解和使用

在Spring应用程序开发的过程中,可能需要根据配置属性的存在和值有条件地创建一些bean,@ConditionalOnProperty注解用于仅在环境属性存在且具有特定值时才启用 bean 注册。

注解源码

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@Documented
@Conditional({OnPropertyCondition.class})
public @interface ConditionalOnProperty {
//获取对应property名称的值,与name不可同时使用
    String[] value() default {};
 
//配置属性名称的前缀
    String prefix() default "";
 
//配置属性完整名称或部分名称
//可与prefix组合使用,组成完整的配置属性名称,与value不可同时使用
    String[] name() default {};
 
//可与name组合使用,比较获取到的属性值与havingValue给定的值是否相同,相同才加载配置
    String havingValue() default "";
 
//缺少该配置属性时是否可以加载。如果为true,没有该配置属性时也会正常加载;反之则不会生效
    boolean matchIfMissing() default false;
}

value以及 prefix + name 决定属性值(Property Value),以下为匹配规则

ConditionalOnProperty配置swagger不生效问题及解决

解析:假如havingValue为空,

  • 属性值为boolean类型,则属性值为true 加载该bean,属性值为false 不加载该bean。
  • 如果属性值不为boolean类型,则有该属性 则加载bean,没有该属性则不加载。

示例

属性值不是boolean类型的情况

@Bean(name = "emailNotification")
@ConditionalOnProperty(prefix = "notification", name = "service")
public NotificationSender notificationSender() {
    return new EmailNotification();
}

如果配置该属性则加载:

notification.service=email

属性值为boolean类型

@Bean(name = "emailNotification")
@ConditionalOnProperty(prefix = "notification", name = "enable")
public NotificationSender notificationSender() {
    return new EmailNotification();
}

如果配置为true则加载

notification.enable=true

如果缺失或为false则不加载

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。


Tags in this post...

Java/Android 相关文章推荐
Java实现斗地主之洗牌发牌
Jun 14 Java/Android
详解Java分布式事务的 6 种解决方案
Jun 26 Java/Android
解决Swagger2返回map复杂结构不能解析的问题
Jul 02 Java/Android
Spring实现内置监听器
Jul 09 Java/Android
java泛型通配符详解
Jul 25 Java/Android
spring cloud 配置中心客户端启动遇到的问题
Sep 25 Java/Android
SpringCloud之@FeignClient()注解的使用方式
Sep 25 Java/Android
SpringBoot+Redis实现布隆过滤器的示例代码
Mar 17 Java/Android
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
Apr 13 Java/Android
Java由浅入深通关抽象类与接口(下篇)
Apr 26 Java/Android
mybatis-plus模糊查询指定字段
Apr 28 Java/Android
spring IOC容器的Bean管理XML自动装配过程
May 30 Java/Android
Java异常体系非正常停止和分类
Android开发手册TextInputLayout样式使用示例
Jun 10 #Java/Android
Java实现简单小画板
Android开发EditText禁止输入监听及InputFilter字符过滤
Jun 10 #Java/Android
详解Spring Bean的配置方式与实例化
Jun 10 #Java/Android
Spring JPA 增加字段执行异常问题及解决
Jun 10 #Java/Android
Android开发手册自定义Switch开关按钮控件
Jun 10 #Java/Android
You might like
国内咖啡文化
2021/03/03 咖啡文化
深入extjs与php参数交互的详解
2013/06/25 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
javascript制作的cookie封装及使用指南
2015/01/02 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
js显示动态时间的方法详解
2016/08/20 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
《梅花魂》教学反思
2014/04/30 职场文书
优秀家长事迹材料
2014/05/17 职场文书
经销商年会策划方案
2014/05/29 职场文书
岗位工作说明书
2014/07/29 职场文书
收款委托书
2014/10/14 职场文书
优秀班主任材料
2014/12/16 职场文书
实验心得体会范文
2016/01/25 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书
golang 在windows中设置环境变量的操作
2021/04/29 Golang
python神经网络ResNet50模型
2022/05/06 Python