写在前面

在SpringBoot的项目中,当在配置文件中配置的值为yes/no或者on/off时,在SpringBoot内部解析时会将yes/no,on/off解析为true/false。

参数配置

参数配置如下:

spring:application:# 应用名称name: damp-drools2drools:use-redis: yes  # 解析为truepath: classpath:com/tiantu/damp/**/*.drlmode: streamauto-update: no # 解析为falseupdate: 60listener: on    # 解析为trueverify: off     # 解析为false

问题分析

根据SpringBoot启动时加载配置文件的原理,查看源代码发现:

public class SafeConstructor extends BaseConstructor {public SafeConstructor(LoaderOptions loadingConfig) {super(loadingConfig);this.yamlConstructors.put(Tag.NULL, new SafeConstructor.ConstructYamlNull());this.yamlConstructors.put(Tag.BOOL, new SafeConstructor.ConstructYamlBool());}public class ConstructYamlBool extends AbstractConstruct {public ConstructYamlBool() {}public Object construct(Node node) {String val = SafeConstructor.this.constructScalar((ScalarNode)node);return SafeConstructor.BOOL_VALUES.get(val.toLowerCase());}}static {BOOL_VALUES.put("yes", Boolean.TRUE);BOOL_VALUES.put("no", Boolean.FALSE);BOOL_VALUES.put("true", Boolean.TRUE);BOOL_VALUES.put("false", Boolean.FALSE);BOOL_VALUES.put("on", Boolean.TRUE);BOOL_VALUES.put("off", Boolean.FALSE);RADIX_MAX = new int[17][2];int[] radixList = new int[]{2, 8, 10, 16};int[] var1 = radixList;int var2 = radixList.length;for(int var3 = 0; var3 < var2; ++var3) {int radix = var1[var3];RADIX_MAX[radix] = new int[]{maxLen(2147483647, radix), maxLen(9223372036854775807L, radix)};}TIMESTAMP_REGEXP = Pattern.compile("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:(?:[Tt]|[ \t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \t]*(?:Z|([-+][0-9][0-9]?)(?::([0-9][0-9])?)?))?)?$");YMD_REGEXP = Pattern.compile("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)$");}
}

解决方案

如果在配置中参数必须使用yes/no,on/off且期望在代码中读取的值也为yes/no,on/off,可以加上单引号或者双引号。

spring:application:# 应用名称name: damp-drools2drools:use-redis: 'yes'  # 解析为yespath: classpath:com/tiantu/damp/**/*.drlmode: streamauto-update: 'no' # 解析为noupdate: 60listener: "on"    # 解析为onverify: "off"     # 解析为off

SpringBoot - application.yml配置文件中yes/no,on/off在代码中读取的值为true/false相关推荐

  1. springboot的yml配置文件绑定时必须和相应的类中的属性类型对应,不然启动报错

    今天启动springboot应用时一开始一直是error,访问localhost也无法打开: 此时自己的Person.java: package boot.bean; import lombok.Da ...

  2. db2 springboot 整合_springboot的yml配置文件通过db2的方式整合mysql代码示例

    本篇文章小编给大家分享一下springboot的yml配置文件通过db2的方式整合mysql代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. s ...

  3. 获取application.yml配置文件中配置的对象集合

    在之前的工作中遇到这样一个问题, 就是在application.yml配置文件中写一些对象集合的数据(当时不让把数据写在数据库中)然后获取他们, 尝试了很多方式都无果, 最终找到了解决的办法, 特此记 ...

  4. SpringBoot的yml配置文件

    1.在src\main\resources下创建application.yml配置文件 spring: datasource: driver-class-name: com.mysql.jdbc.Dr ...

  5. 【springboot】application.yml配置文件中数据库密码password加密后显示

    转载自:https://blog.csdn.net/linjingke32/article/details/81329614 如果使用@SpringBootApplication注解启动的项目,只需增 ...

  6. SpringBoot启动如何加载application.yml配置文件

    一.前言 在spring时代配置文件的加载都是通过web.xml配置加载的(Servlet3.0之前),可能配置方式有所不同,但是大多数都是通过指定路径的文件名的形式去告诉spring该加载哪个文件: ...

  7. 三、SpringBoot-application.properties配置文件和application.yml配置文件

    其实SpringBoot的配置文件有.properties和.yml两种形式,两种配置文件的效果类似,只不过是格式不同而已,孩儿们可以根据下面这几种张截图,通过对比端口号的配置,以及连接SQLServ ...

  8. 解决SpringBoot的yml配置文件报错: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping

    问题描述 今天在SpringBoot的application.yml中新增了一个配置项: 但是启动的时候报错了,错误如下所示: org.yaml.snakeyaml.parser.ParserExce ...

  9. 如何正确的使用Java8中的Optional类来消除代码中的null检查

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:一书生VOID lw900925.github.io/jav ...

最新文章

  1. PBR游戏3D模型合集包 PBR Game 3D-Models Bundle February 2022
  2. GMTC 大前端时代前端监控的最佳实践
  3. 数据增删改查之三层架构(理解三层续)
  4. macOS彻底卸载/删除Microsoft相关的程序
  5. matlab 生成连续信号,Matlab的连续信号生成及时频域分析
  6. 电商数据库设计及架构优化实战(一) - 制定数据库开发规范
  7. Android View之用户界面...
  8. 阿里巴巴16字真言 | 管理者的基本要求是什么?
  9. 英文歌的计算机普,好听的英文歌:See You Again--DJ Frank ECharlie Puth
  10. 未转变者服务器可作弊,未转变者作弊指令有哪些-未转变者作弊指令大全
  11. Word插入目录页面编辑Tips
  12. 福利:学生免费注册使用JB全家桶
  13. 63. 请简述构造方法和析构方法的作用?
  14. postgresql 免安装版本
  15. bch verilog代码_基于FPGA的多进制BCH编码
  16. 17.IO、文件、NIO【草案三】
  17. 如何将本地项目上传到gitee仓库里
  18. CTFshow刷题日记-WEB-JAVA(web279-300)Struts2全漏洞复现,Java漏洞复现
  19. 校准报告确认有哪些方法?为什么需要进行确认?
  20. Moto android系統 流量,天翼旗舰 摩托罗拉Droid X ME811评测

热门文章

  1. 判断一个整数是否是2的倍数
  2. 电子投票算法_电子投票的历史不短
  3. Armin Strom推出“致敬1”系列;卡西欧将发布紧凑型G-SHOCK | 知消
  4. 关于找工作的鸡零狗碎
  5. 剖析SQL Server 2005查询通知之基础篇
  6. jaeger 链路追踪
  7. Java Thread 源码解析
  8. 搭建LEON3研发环境(一)
  9. centos7搭建DNS服务,CA字签证书
  10. 给锂电池充电,充电器的输出电压