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

DevOps 实战启动协议:从代码提交到自动验证的最小可行流水线 DevOps 不是知识图谱,而是可执行的工程行动协议。其核心在于将抽象能力转化为具体动作——在真实业务压力下,以最小认知负荷实现自动化验证闭环。本文聚焦 CI/CD 最小可行流水线构建原理,强调环境一致性保障与自动化验证闭环的技术价值:通过 GitHub Actions 等轻量工具链,强制统一 JDK、OS、配置等运行时要素,使每次代码提交都能触发编译、测试、扫描、报告的端到端自动反馈。该实践广泛适用于 Java/Spring Boot 项目快速落地,支撑开发、SRE、技术负责人在延期项目中当天部署、次日交 阅读详情

写在前面

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

参数配置

参数配置如下:

spring:
  application:
    # 应用名称
    name: damp-drools2
  drools:
    use-redis: yes  # 解析为true
    path: classpath:com/tiantu/damp/**/*.drl
    mode: stream
    auto-update: no # 解析为false
    update: 60
    listener: on    # 解析为true
    verify: 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-drools2
  drools:
    use-redis: 'yes'  # 解析为yes
    path: classpath:com/tiantu/damp/**/*.drl
    mode: stream
    auto-update: 'no' # 解析为no
    update: 60
    listener: "on"    # 解析为on
    verify: "off"     # 解析为off
Windows原生部署EMQX 5.3 MQTT服务器实战指南 MQTT是一种轻量级物联网消息协议,其核心在于低开销、高并发与发布/订阅模型;EMQX作为主流开源MQTT Broker,凭借原生Erlang实现和HOCON配置体系,在Windows平台提供稳定、可热重载、免Docker的本地消息中枢能力。相比Mosquitto的Windows服务脆弱性与RabbitMQ的MQTT插件局限性,EMQX Windows版(如emqx-5.3.0-windows-amd64)支持标准SCM服务管理、localhost:18083可视化Dashboard及Rule Engine 阅读详情

相关推荐

WSL2原生部署MySQL Redis RocketMQ中间件实战

Linux中间件在Windows开发环境的稳定运行,本质依赖于POSIX兼容性、系统调用直通与文件I/O语义一致性。WSL2通过轻量级Linux内核提供真正的syscall支持,使MySQL的InnoDB内存映射、Redis的epoll事件模型、RocketMQ的commitlog顺序写等核心机制得以原生发挥。相比Docker Desktop的容器封装,WSL2原生进程部署带来更透明的JVM调优、iostat磁盘监控和ss网络诊断能力,显著提升消息积压、慢查询、大Key阻塞等典型问题的定位效率。本文聚焦ws

weixin_34241036的博客 779

SpringBoot/SpringCloud为什么yml配置的值是on,而在程序中读取出来的是true

SpringBoot/SpringCloud为什么yml配置的值是on,而在程序中读取出来的是true

qq_33486718的博客 469

Minitab正交试验设计:从入门到精通的完整指南

本文提供了一份使用Minitab进行正交试验设计的完整指南。从正交试验省时省力的原理讲起,详细介绍了在Minitab中创建正交表、填入数据、执行分析(包括解读ANOVA和P值)以及寻找最优参数组合的全流程。文章旨在帮助读者,特别是工艺优化和研发人员,快速掌握这一高效工具,从而用最少的实验次数锁定关键影响因素,提升工作效率与成果。

weixin_29201313的博客 462

yaml文件格式说明

yaml文件格式说明yaml简介基本语法YAML支持的数据结构对象类型:对象的一组键值对,使用冒号结构表示 yaml简介 是一个可读性高,用来表达数据序列的格式。YAML的意思是:仍是一种标记语言,但为了强调这种语言以数据为中心,而不是以标记语言为重点。 基本语法 缩进时不允许使用tab键,只允许使用空格 缩进的空格数目不重要,只要相同层级的元素左右对齐即可 #标识注释,从这个字符一直到行尾,都会被解释器忽略 YAML支持的数据结构 对象:键值对的集合,又称为映射(mapping)/ 哈希(

weixin_45364386的博客 2734

vscode远程开发-调试模式下attach远程进程提示管理员权限失败的问题

vscode 远程开发 附加进程

comhaqs的专栏 2878

C#与YOLOv8工业缺陷检测实战:从算法到PLC集成的工程化落地

目标检测作为计算机视觉的核心任务,其原理是通过深度学习模型在图像中定位并识别物体。这项技术的关键价值在于将AI的感知能力转化为实际生产力,尤其在工业自动化领域,它能实现高效、精准的视觉检测。在工业缺陷检测这一典型应用场景中,稳定性和实时性是核心挑战。本文聚焦于如何将YOLOv8这一先进的目标检测模型,与C#上位机开发及工业相机硬件深度集成,构建一个能够7x24小时稳定运行的智能检测系统。文章深入探讨了从模型训练、ONNX部署,到与PLC通信联调的完整工程化路径,并针对工业环境中常见的稳定性、性能及调试问题提

weixin_33508411的博客 236

数据库0,1和flase true的转换

数据库字段类型为tinyint(1),数据库中实际存储的是int类型数据,一般是0和1,在使用Mybatis取这个字段的数据时,Mybatis会自动将tinyint(1)字段值为0的转换成false,将字段值为1以上的转换为true。 ...

qq_44399112的博客 1842

保姆级教程:在Ubuntu 22.04上用Python3.10和pysoem搞定EtherCAT电机回零与位置控制

本文提供在Ubuntu 22.04上使用Python3.10和pysoem实现EtherCAT电机回零与位置控制的详细指南。涵盖环境搭建、权限配置、EtherCAT主站架构解析、CiA402协议核心机制及工业级精度控制实现,帮助开发者快速掌握Python在工业自动化中的应用。

weixin_30952535的博客 328

yaml文件配置读取不到on: true,结果是yaml的语法忘记了

有被自己蠢到 太久没用yaml了,语法都忘了 在yaml里,用on、1、true来表示true,off、0、false来表示false

低调的骏马 1655

LaTex的下载与安装(2024小白+windows系统)

本文主要介绍了Latex的下载与安装,还包括安装过程中遇到的小问题的解决。

m0_53096519的博客 2万+

LeRobot 入门教程(一)软件环境、部署流程及摄像头配置

🤖 LeRobot:开源机器人学习平台 摘要:LeRobot是一个基于PyTorch的开源机器人学习平台,提供模型、数据集和工具,旨在降低机器人技术门槛。平台包含经过验证的模仿学习和强化学习方法,并提供预训练模型、人类演示数据集及模拟环境。安装需从源码获取,支持Python 3.10环境,可选扩展包括仿真环境(如gym-aloha)、电机控制(Dynamixel/Feetech SDK)和实验跟踪(Weights & Biases)。该平台托管在HuggingFace,并设有社区Discord频道

2506_90492529的博客 3416

【自定义外部配置】记SpringBoot读取配置文件的坑(自定义元数据)

记SpringBoot读取配置文件的坑(自定义元数据) 使用的注解@ConfigurationProperties,@ConditionalOnProperty 在一次日常写代码中,按着度娘写的代码去读取配置文件中的数据,发现 @ConditionalOnProperty 这个注解总是验证不通过(导致bean注册不上去)。仔细查找一下资料,发现写法并无错误,但就是验证不通过,发现配置文件中不为on就能通过,即使是false也能通过(这里是指字符串)。于是开始一下午的排坑之旅。 先说结论 SpringBoo

m0_52142443的博客 1506

【项目解析】2KW 230V 数字逆变器控制系统(二)

【项目解析】 2KW 230V 数字逆变器控制系统(一) 项目的 交流输出电压 并不是单纯一个电压环就能控制好的,而是典型的 双环控制架构:最终占空比控制量会经过计算: 然后写入 单片机 TMM 定时器的比较寄存器 (TMGRA0/TMGRD0/TMGRC1), → 定时器输出互补 PWM, → 驱动 IGBT 全桥, → 经过 LC 滤波形成 230 VAC / 50Hz 的正弦电压。总结交流电压是双环控制的结果:目标/作用:把输出 RMS 电压稳到目标(例如 230 VAC);在母线波动与负载变化下

Naiva的博客 1296

SpringBoot:yml配置文件的读取

yml配置文件的读取     YAML(/ˈjæməl/,尾音类似camel骆驼)是 “YAML Ain’t a Markup Language”(YAML不是一种标记语言)的递归缩写,是一个可读性高,用来表达数据序列化的格式。 一、yml基本语法 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格 不同级之间缩进2格空格 冒号后面有一个空格,前面没有 注释以#开头...

smileKutper的博客 1239

高速信号设计中的关键测试项目与测试仪器详解

高速信号设计是一个多维度协同优化的系统工程。时域分析如同外科手术刀般精准定位物理缺陷,频域分析提供传输通道的频谱指纹,信号质量评估量化系统鲁棒性,接收端容限测试验证极端工况下的可靠性,协议一致性确保生态互操作性,而电源完整性则直指诸多信号问题的根源。

u014344410的博客 217

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java【问题 05】yml配置文件boolean一直为false问题分析解决

yml配置文件boolean一直为false问题分析解决

Java与大数据相关实践内容分享! 2525

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

(el-switch)操作(不使用 ts):Element-plus 中 Switch 将默认值修改为 “true“ 与 “false“(字符串)来控制开关

【代码】(el-switch)操作:Element-plus 中 Switch 将默认值修改为 “true“ 与 “false“(字符串)来控制开关。

狮子座的男孩 2941

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SpringBoot入门

一、微服务发展进程 是一种架构风格,将业务拆分成模块,部署在不同的主机上提供结构,提供服务,通过http的方式通信. 1、发展历程(单体应用程序) 将一个应用的所有应用服务都封在一个应用中,无论什么系统,都把数据库访问,web访问,各个功能放在一 个war包内. 好处: ①架构简单,项目开发成本低. ②所有项目模块部署到一起,对于小型项目来说,维护方便. 缺点: ①所有模块耦合在一起,虽然对于小型项目来说,维护方便.但是,对于大型项目来说,却是不易开发和维护的. ②项目的

qq_59025975的博客 955

记一次排错:java后端的数据是0或者1,传到前端之后变成了true或者false

mybatis plus自动生成代码tinyint(1)自动转换为Boolean 的解决办法

爱吃雪糕的小布丁的博客 3415

Boolean中0与1的转化

刚刚接口中遇到个Boolean中0与1的转化的问题。死活不知道到底是哪里除了问题,于是经过排查,发现是java中Boolean与boolean是由和大区别的。如图 修改前接口中isParent中都是false,修改后接口中数据正常了: boolean中小写的是不能转化为1和0的,只有大写的Boolean是可以自动转化映射为接口的0和1的。 boolean是基本数据类型 Bool...

Town 1万+

SpringBoot Jackson 实体String “1“/“0“ 转 JSON true/false

SpringBoot Jackson 实体String "1"/"0" 转 JSON true/false 背景: 最近重拾ExtJs,使用ExtJs7.2搭建前端项目,后端服务使用SpringBoot+JWT+MP.在使用ExtJs中Grid表格组件的时候发现了checkcolumn相关问题. 后台服务实体类字段属性为String(对应数据库字段类型为char(1) 0/1 两个值 ),前端要求数据必须是boolean类型. 即 数据库 char(1) ==> 实体类 String ==&..

sword_happy的博客 3366

sping boot/cloud配置文件 on 读取为true

最近在写spring cloud 项目时需要配置开关,按照以往写项目的习惯,就在配置文件命名了key 之后写了 on. 项目启动之后,神奇的事情出现了,项目读取到的值居然变成了 true!这让我大吃一惊,问了下身边的资深同事,同事说:这怎么可能,你不扯淡呢,你又搞了什么鬼,on怎么可能变成true??! 没办法,只能自己摸索. 首先核对了配置项和读取的代码,发现没问题,再对spingCloud的...

hb9176070的博客 1415

ElasticSearch中yml文件配置

感谢博主分享

zhaoxiangjun_的博客 6039

spirngboot项目配置文件中的on/off

案例: springboot项目中yml文件配置信息配置如下: clean: user_clean_swith: off # 是否清理用户数据 on -- 是;off -- 否 ;当为off时,dateCap和dateCab配置无效 dateCap: 2019-06-01 00:00:00 # 时间上线 dateCap >= dateCab date...

我弟是个程序员 1267

JAR包自动启动脚本

#!/bin/bash killjar() { pid=`ps -ef|grep supplier-center |grep java |awk '{print $2}'` echo "supplier-center Id list :$pid" if [ "$pid" = "" ] then echo "no supplier-center pid alive" else kill -9 $pid fi export jar_PATH=/data/web export APP_PA.

jialiu111111的博客 8396
上一篇: SpringBoot - @Mapper与@MapperScan注解的作用是什么?
下一篇: SpringBoot是什么?
cloneme01
博客等级 码龄20年 2万+粉丝 248原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cloneme01

谢谢您的支持与鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值