SpringBoot - application.yml配置文件中yes/no,on/off在代码中读取的值为true/false
写在前面
在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相关推荐
- springboot的yml配置文件绑定时必须和相应的类中的属性类型对应,不然启动报错
今天启动springboot应用时一开始一直是error,访问localhost也无法打开: 此时自己的Person.java: package boot.bean; import lombok.Da ...
- db2 springboot 整合_springboot的yml配置文件通过db2的方式整合mysql代码示例
本篇文章小编给大家分享一下springboot的yml配置文件通过db2的方式整合mysql代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. s ...
- 获取application.yml配置文件中配置的对象集合
在之前的工作中遇到这样一个问题, 就是在application.yml配置文件中写一些对象集合的数据(当时不让把数据写在数据库中)然后获取他们, 尝试了很多方式都无果, 最终找到了解决的办法, 特此记 ...
- SpringBoot的yml配置文件
1.在src\main\resources下创建application.yml配置文件 spring: datasource: driver-class-name: com.mysql.jdbc.Dr ...
- 【springboot】application.yml配置文件中数据库密码password加密后显示
转载自:https://blog.csdn.net/linjingke32/article/details/81329614 如果使用@SpringBootApplication注解启动的项目,只需增 ...
- SpringBoot启动如何加载application.yml配置文件
一.前言 在spring时代配置文件的加载都是通过web.xml配置加载的(Servlet3.0之前),可能配置方式有所不同,但是大多数都是通过指定路径的文件名的形式去告诉spring该加载哪个文件: ...
- 三、SpringBoot-application.properties配置文件和application.yml配置文件
其实SpringBoot的配置文件有.properties和.yml两种形式,两种配置文件的效果类似,只不过是格式不同而已,孩儿们可以根据下面这几种张截图,通过对比端口号的配置,以及连接SQLServ ...
- 解决SpringBoot的yml配置文件报错: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping
问题描述 今天在SpringBoot的application.yml中新增了一个配置项: 但是启动的时候报错了,错误如下所示: org.yaml.snakeyaml.parser.ParserExce ...
- 如何正确的使用Java8中的Optional类来消除代码中的null检查
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:一书生VOID lw900925.github.io/jav ...
最新文章
- PBR游戏3D模型合集包 PBR Game 3D-Models Bundle February 2022
- GMTC 大前端时代前端监控的最佳实践
- 数据增删改查之三层架构(理解三层续)
- macOS彻底卸载/删除Microsoft相关的程序
- matlab 生成连续信号,Matlab的连续信号生成及时频域分析
- 电商数据库设计及架构优化实战(一) - 制定数据库开发规范
- Android View之用户界面...
- 阿里巴巴16字真言 | 管理者的基本要求是什么?
- 英文歌的计算机普,好听的英文歌:See You Again--DJ Frank ECharlie Puth
- 未转变者服务器可作弊,未转变者作弊指令有哪些-未转变者作弊指令大全
- Word插入目录页面编辑Tips
- 福利:学生免费注册使用JB全家桶
- 63. 请简述构造方法和析构方法的作用?
- postgresql 免安装版本
- bch verilog代码_基于FPGA的多进制BCH编码
- 17.IO、文件、NIO【草案三】
- 如何将本地项目上传到gitee仓库里
- CTFshow刷题日记-WEB-JAVA(web279-300)Struts2全漏洞复现,Java漏洞复现
- 校准报告确认有哪些方法?为什么需要进行确认?
- Moto android系統 流量,天翼旗舰 摩托罗拉Droid X ME811评测