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 Swing实现自助取款机系统
Jun 11 Java/Android
分享一些Java的常用工具
Jun 11 Java/Android
浅析NIO系列之TCP
Jun 15 Java/Android
Java 中的 Unsafe 魔法类的作用大全
Jun 26 Java/Android
浅谈resultMap的用法及关联结果集映射
Jun 30 Java/Android
java设计模式--建造者模式详解
Jul 21 Java/Android
JavaWeb Servlet开发注册页面实例
Apr 11 Java/Android
详细介绍Java中的CyclicBarrier
Apr 13 Java/Android
Spring Data JPA框架持久化存储数据到数据库
Apr 28 Java/Android
利用正则表达式匹配浮点型数据
May 30 Java/Android
HttpClient实现文件上传功能
Aug 14 Java/Android
Mybatis 一级缓存和二级缓存原理区别
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
使用PHP数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
深入理解Promise.all
2018/08/08 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
python del()函数用法
2013/03/24 Python
Python简明入门教程
2015/08/04 Python
pandas通过索引进行排序的示例
2018/11/16 Python
python读取Kafka实例
2019/12/23 Python
python的sys.path模块路径添加方式
2020/03/09 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
Python3爬虫中关于中文分词的详解
2020/07/29 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
培训演讲稿范文
2014/01/12 职场文书
中秋寄语大全
2014/04/11 职场文书
建筑节能汇报材料
2014/08/22 职场文书
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python
Python&Matlab实现樱花的绘制
2022/04/07 Python