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图书管理系统,课程设计必用(源码+文档)
Jun 30 Java/Android
浅谈Java父子类加载顺序
Aug 04 Java/Android
Spring中的使用@Async异步调用方法
Nov 01 Java/Android
利用Sharding-Jdbc进行分库分表的操作代码
Jan 22 Java/Android
你知道Java Spring的两种事务吗
Mar 16 Java/Android
Java Lambda表达式常用的函数式接口
Apr 07 Java/Android
Java 超详细讲解ThreadLocal类的使用
Apr 07 Java/Android
SpringBoot 集成短信和邮件 以阿里云短信服务为例
Apr 22 Java/Android
Android开发 使用文件储存的方式保存QQ密码
Apr 24 Java/Android
Android存储中最基本的文件存储方式
Apr 30 Java/Android
springboot为异步任务规划自定义线程池的实现
Jun 14 Java/Android
springboot集成redis存对象乱码的问题及解决
Jun 16 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
codeigniter框架批量插入数据
2014/01/09 PHP
php之readdir函数用法实例
2014/11/13 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
JavaScript arguments 多参传值函数
2010/10/24 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
微信小程序左右滑动切换页面详解及实例代码
2017/02/28 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
自己使用总结Python程序代码片段
2015/06/02 Python
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
电子商务专业学生的自我鉴定
2013/11/28 职场文书
养殖项目策划书范文
2014/01/13 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
物理教育专业求职信
2014/06/25 职场文书
网吧管理制度范本
2015/08/05 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript