文章讲述了在SpringBoot的YML配置文件中遇到特殊字符导致识别问题的情况,相比.properties格式的配置文件,YML格式可能会遇到颜色显示异常和启动时报错。提出了三种解决方案:1)对特殊字符参数添加单引号;2)修改或去除特殊字符;3)更改为.properties格式的配置文件。这些问题同样存在于Spring框架的其他组件中。
摘要由CSDN通过智能技术生成
springBoot框架 yml配置文件中出现特殊字符问题是我最近才发现的一个问题,以前常用.properties 格式配置文件,没发现此现象,因此此格式的配置文件不存在这种问题,即使有特殊符号也可以正常识别;缓冲yml格式后就不能识别了。并且细心的人可以明显的发现配置文件有问题、显示现象如下:
明显发现颜色和其他的参数都不一致;并且启动时报找不到密码的错误。 对比.properties格式的文件,如下:
此处所有参数的颜色是一致的,并且启动时没有报错。找到原因了,那么怎么解决啊?
1、方案一:简单方便,把此参数加上单引号: ' ',如下操作
2、方案二:如果可能的话,修改此此参数,主要是去掉特殊符号,如下操作:
3、方案三:把配置文件换成 .properties 格式的,是不是简单粗暴啊!
此三种方案最常用,肯定能解决你的问题,另外,准确的说不仅仅springBoot 框架有此种现象,spring 全家桶都存在此现象,解决方案是一致的!
Caused by: org.
yaml
.snake
yaml
.constructor.ConstructorException: Can't construct a
java
object for !QAZ2wsx; exception=Invalid tag: !QAZ2wsx
用单引号将
特殊字符
的值包起来,如下:
password : '!QAZ2wsx'
重新启动即可正常运行。
.xml
配置文件
:
<bean id="userDao" class="com.itlaobin.dao.impl.UserDaoImpl"></bean>
<bean id="userService" class="com.itlaobin.service.impl.UserserviceImpl">
<property name="userDao" ref="userDao"></property>
博主在迁移一个老项目时,需要将properties修改为
yml
,碰到
yml
需要处理
特殊字符
的情况,现在总结如下
如果只是value
中
有
特殊字符
可以使用’'包住
spring
:
datasource:
password: '#*1231'
如果是key也包含
特殊字符
,处理方式如下
example:
"[path/get]": asdfae
如果在[] 外面不添加双引号,则取出的值为[path/get] ,会把[]也输出
springboot
项目
中
,需要对前端请求数据进行过滤,拦截
特殊字符
。
GET请求可以很方便的通过处理URL判断是否包含
特殊字符
,POST类型请求需要对form-data/json特殊处理,使用@RequestBody注解的controller获取不到数据
原因分析:
request
中
的getInputStream()方法和getReader()方法只能获取一次数据,通过@RequestBody注解再次获取getInputStream()拿到结果为空,此处通过重写getInputStr