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用自带的Image IO给图片添加水印
Jun 15 Java/Android
Java生成读取条形码和二维码的简单示例
Jul 09 Java/Android
java设计模式--建造者模式详解
Jul 21 Java/Android
OpenCV实现普通阈值
Nov 17 Java/Android
OpenCV实现反阈值二值化
Nov 17 Java/Android
Java使用JMeter进行高并发测试
Nov 23 Java/Android
springboot新建项目pom.xml文件第一行报错的解决
Jan 18 Java/Android
Spring依赖注入多种类型数据的示例代码
Mar 31 Java/Android
Java后端 Dubbo retries 超时重试机制的解决方案
Apr 14 Java/Android
IDEA 2022 Translation 未知错误 翻译文档失败
Apr 24 Java/Android
Java 多态分析
Apr 26 Java/Android
Android 中的类文件和类加载器详情
Jun 05 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+DBM的同学录程序(5)
2006/10/09 PHP
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
PHP图像处理类库及演示分享
2015/05/17 PHP
AJAX的使用方法详解
2017/04/29 PHP
文本有关的样式和jQuery求对象的高宽问题分别说明
2013/08/30 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
python中字典dict常用操作方法实例总结
2015/04/04 Python
回调函数的意义以及python实现实例
2017/06/20 Python
Python导入模块时遇到的错误分析
2017/08/30 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
python学习开发mock接口
2019/04/28 Python
python如何删除文件、目录
2020/06/23 Python
如何用Python徒手写线性回归
2021/01/25 Python
美国网上花店:JustFlowers
2017/02/12 全球购物
阿波罗盒子:Apollo Box
2017/08/14 全球购物
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
2015/08/25 面试题
恶意软件的定义
2014/11/12 面试题
实习鉴定评语
2014/01/19 职场文书
本科生职业生涯规划书范文
2014/01/21 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
成绩单家长评语大全
2014/04/16 职场文书
专项法律服务方案
2014/06/11 职场文书
检讨书格式
2015/01/23 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
Nginx反向代理配置的全过程记录
2021/06/22 Servers