当前位置: 首页 > 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 # 自动处理请求转发问题

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



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

相关文章:

  • [数据集][目标检测]围栏破损检测数据集VOC+YOLO格式1196张1类别
  • 封装stater时配置导入配置类提示功能
  • MacOS docker 安装与配置
  • 工具:颜色查询 / CMYK颜色查询RGB、HSL、HSV、XYZ的颜色值
  • 提升学生职务执行力的智慧校园学工管理策略
  • ubuntu中后台启动一个jar
  • 等保测评——云计算安全扩展(云计算关键技术)
  • amis中条件组合器condition-builder的使用 和 解析
  • 昇思MindSpore学习总结八——静态图加速
  • 【PHP】控制摄像头缩放监控画面大小,并保存可视画面为图片
  • IT设备监控模板:支持多种监控工具和平台的集成和整合
  • 微服务之服务保护策略【持续更新】
  • 初识单片机
  • 10计算机视觉—物体检测算法
  • MYSQL双主双从,使用Keepalived双机热备+LVS高可用群集
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • eclipse的离线汉化
  • js写一个简单的选项卡
  • Puppeteer:浏览器控制器
  • Python十分钟制作属于你自己的个性logo
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • V4L2视频输入框架概述
  • vue数据传递--我有特殊的实现技巧
  • 程序员该如何有效的找工作?
  • 关于extract.autodesk.io的一些说明
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端技术周刊 2019-01-14:客户端存储
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 数组的操作
  • 思维导图—你不知道的JavaScript中卷
  • 小程序01:wepy框架整合iview webapp UI
  • 新手搭建网站的主要流程
  • Hibernate主键生成策略及选择
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 说说我为什么看好Spring Cloud Alibaba
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​卜东波研究员:高观点下的少儿计算思维
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $.proxy和$.extend
  • (1)svelte 教程:hello world
  • (55)MOS管专题--->(10)MOS管的封装
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (poj1.3.2)1791(构造法模拟)
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (三)SvelteKit教程:layout 文件
  • (五)Python 垃圾回收机制
  • (转)我也是一只IT小小鸟
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net MySql
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET/C# 使用 SpanT 为字符串处理提升性能