当前位置: 首页 > news >正文

spring boot读取yml配置注意点记录

问题1:yml中配置的值加载到代码后值变了。

现场yml配置如下:

type-maps:infos:data_register: 0ns_xzdy: 010000ns_zldy: 020000ns_yl: 030000ns_jzjz: 040000ns_ggglyggfwjz: 050000ns_syffyjz: 060000ns_gyjz: 070000ns_ccywljz: 080000ns_qtjz: 090000

服务会根据拿到的分类代码查找对应的分类名称。项目组反馈前端传080000可以拿到分类名称,但是前端传060000的时候却拿不到值,很是奇怪。使用线上诊断神奇arthas看了一眼,大吃一惊:

这配置加载的不对劲。

一通查找发现是因为YML规范的问题:

在Spring Boot应用中,当你尝试从application.yml文件中读取一个值,并且该值是一个以01开头的数字,可能会遇到问题。YAML 1.2 规范允许以0开头的数字被解析为八进制(Octal),但是如果数字包含89,则会导致解析错误,因为八进制数系统不包含这些数字。

这也就解释了为什么080000可以,060000不可以。 因为00-07开头的都会被以8进制的方式解析,这就是上午4096等数字的由来。

解决办法:

  1. 如果你需要保持该数字为八进制,确保其余部分只包含07的数字。

  2. 如果你需要保留这个值作为字符串,可以在YAML配置中使用双引号将值包裹起来,这样Spring Boot会将其当作字符串处理,不会尝试转换为数字。 例如:



问题2:spring boot服务通过nginx代理后获取不到准确的IP。

 现场服务要求使用加密传输,于是使用nginx代理成https转发给后台。结果后台通过

request.getRequestURL()

拿到的请求还是http的,导致业务处理有问题。

又是一通查找发现首先nginx要配置转发请求协议

proxy_set_header X-Forwarded-Proto $scheme;

完整的nginx配置如下:

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_set_header X-Forwarded-Port $server_port;

 

然后在后台服务的yml添加配置:

server:forward-headers-strategy: native # 自动处理请求转发问题

即可自动获取到前端发起的请求地址。 



等待下次更新。。。。。。

http://www.lryc.cn/news/396977.html

相关文章:

  • 电子电气架构 --- 关于DoIP的一些闲思 下
  • Java getSuperclass和getGenericSuperclass
  • ARM功耗管理标准接口之ACPI
  • 2024年网络监控软件排名|10大网络监控软件是哪些
  • 通过Arcgis从逐月平均气温数据中提取并计算年平均气温
  • 每日一题~abc356(对于一串连续数字 找规律,开数值桶算贡献)
  • 商业合作方案撰写指南:让你的提案脱颖而出的秘诀
  • 【MySQL】锁(黑马课程)
  • 1.10编程基础之简单排序--02:奇数单增序列
  • 【leetcode78-81贪心算法、技巧96-100】
  • IEC62056标准体系简介-4.IEC62056-53 COSEM应用层
  • 嵌入式应用开发之代码整洁之道
  • iwconfig iwpriv学习之路
  • 【Docker-compose】搭建php 环境
  • 【记录】LaTex|LaTex 代码片段 Listings 添加带圆圈数字标号的箭头(又名 LaTex Tikz 库画箭头的简要介绍)
  • 《框架封装 · Redis 事件监听》
  • 小白学webgl合集-Three.js加载器
  • 【算法】字符串的排列
  • 5-3.损失函数
  • SCSA第四天
  • 品牌策划必读:9本改变游戏规则的营销经典
  • 泛型
  • react动态渲染列表与函数式组件
  • 小程序内容管理系统设计
  • HDFS 块重构和RedundancyMonitor详解
  • Power BI DAX常用函数使用场景和代码示例
  • 机器学习与深度学习:区别与联系(含工作站硬件推荐)
  • 大模型/NLP/算法面试题总结5——Transformer和Rnn的区别
  • 【RHCE】转发服务器实验
  • AI提示词:打造爆款标题生成器