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设置Word文本框中的文字旋转方向的实现方法
Jun 28 Java/Android
Java Spring 控制反转(IOC)容器详解
Oct 05 Java/Android
解析mybatis-plus中的resultMap简单使用
Nov 23 Java/Android
使用Java去实现超市会员管理系统
Mar 18 Java/Android
MybatisPlus EntityWrapper如何自定义SQL
Mar 22 Java/Android
Java中API的使用方法详情
Apr 06 Java/Android
详解Flutter和Dart取消Future的三种方法
Apr 07 Java/Android
SpringCloud Function SpEL注入漏洞分析及环境搭建
Apr 08 Java/Android
Java8 CompletableFuture 异步回调
Apr 28 Java/Android
java开发双人五子棋游戏
May 06 Java/Android
一文搞懂Java中的注解和反射
Jun 21 Java/Android
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
Jul 07 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 开发环境配置(Zend Server安装)
2010/04/28 PHP
在PHP中实现Javascript的escape()函数代码
2010/08/08 PHP
PHP的基本常识小结
2013/07/05 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
js资料toString 方法
2007/03/13 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
基于js中style.width与offsetWidth的区别(详解)
2017/11/12 Javascript
react实现菜单权限控制的方法
2017/12/11 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
vue动画效果实现方法示例
2019/03/18 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
Python 描述符(Descriptor)入门
2016/11/20 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
Anaconda下安装mysql-python的包实例
2018/06/11 Python
python按修改时间顺序排列文件的实例代码
2019/07/25 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
苹果音乐订阅:Apple Music
2018/08/02 全球购物
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
学校节能减排倡议书
2014/05/16 职场文书
低碳环保口号
2014/06/12 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
同事离别感言
2015/08/04 职场文书
Go语言编译原理之源码调试
2022/08/05 Golang