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 Nio使用NioSocket客户端与服务端交互实现方式
Jun 15 Java/Android
idea搭建可运行Servlet的Web项目
Jun 26 Java/Android
SpringBoot实现异步事件驱动的方法
Jun 28 Java/Android
Java 数组内置函数toArray详解
Jun 28 Java/Android
swagger如何返回map字段注释
Jul 03 Java/Android
java泛型通配符详解
Jul 25 Java/Android
深入浅出讲解Java8函数式编程
Jan 18 Java/Android
Java虚拟机内存结构及编码实战分享
Apr 07 Java/Android
Java 超详细讲解ThreadLocal类的使用
Apr 07 Java/Android
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 Java/Android
springboot集成redis存对象乱码的问题及解决
Jun 16 Java/Android
spring boot实现文件上传
Aug 14 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上传文件并存储到mysql数据库的方法
2015/03/16 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
javascript与CSS复习(三)
2010/06/29 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
python处理大数字的方法
2015/05/27 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
PyCharm如何导入python项目的方法
2020/02/06 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
业务员岗位职责范本
2013/12/15 职场文书
医院护士的求职信范文
2013/12/26 职场文书
2014年上半年工作自我评价
2014/01/18 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
2014年减负工作总结
2014/12/10 职场文书
商务考察邀请函模板
2015/02/02 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
导游词之沈阳清昭陵
2019/12/28 职场文书
MySQL连接控制插件介绍
2021/09/25 MySQL
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python