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 相关文章推荐
Win10系统下配置Java环境变量
Jun 13 Java/Android
Spring Data JPA使用JPQL与原生SQL进行查询的操作
Jun 15 Java/Android
详解SpringBoot异常处理流程及原理
Jun 21 Java/Android
springboot如何初始化执行sql语句
Jun 22 Java/Android
Java面试题冲刺第十九天--数据库(4)
Aug 07 Java/Android
Java数据开发辅助工具Docker与普通程序使用方法
Sep 15 Java/Android
Java使用Unsafe类的示例详解
Sep 25 Java/Android
Netty分布式客户端接入流程初始化源码分析
Mar 25 Java/Android
Netty客户端接入流程NioSocketChannel创建解析
Mar 25 Java/Android
阿里面试Nacos配置中心交互模型是push还是pull原理解析
Jul 23 Java/Android
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
Aug 05 Java/Android
Android移动应用开发指南之六种布局详解
Sep 23 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
Yii2框架数据库简单的增删改查语法小结
2016/08/31 PHP
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
javascript实现的网站访问量统计代码
2015/12/20 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
Vue2.0实现组件数据的双向绑定问题
2018/03/06 Javascript
解决vue单页面应用中动态修改title问题
2019/06/09 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
科颜氏香港官方网店:Kiehl’s香港
2021/03/07 全球购物
大学旷课检讨书
2014/01/28 职场文书
中学生班主任评语
2014/01/30 职场文书
商场消防演习方案
2014/02/12 职场文书
吃空饷专项治理工作实施方案
2014/03/04 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python