spring cloud config (中文乱码问题)
作者:互联网
a.问题描述:当从远端拉取的properties
配置文件中含有中文,呈现乱码
b.产生原因:
spring 中默认使用PropertiesPropertySourceLoader
进行properties文件解析,在解析过程会利用OriginTrackedPropertiesLoader
创建CharacterReader
, 而问题就出现在这个CharacterReader
身上,内部指定了ISO_8859_1
编码,导致解析中文乱码!
c.解决方法:
对于spring cloud config
组件由两部分组成,分别是configServer
和configClient
,configClient
向configServer
发起配置请求,configServer
从github
上拉取配置并在本地缓存,而后对配置文件进行解析
,最后将配置发送个configClient
, 所以,问题主要解决点在configServer
方!。
> 注意:下述操作在configServer
方!!!
创建两个自定义对象,分别是`CustomizedOriginTrackedPropertiesLoader`和`CustomizedPropertiesPropertySourceLoader`分别对应源码的`OriginTrackedPropertiesLoader`和`PropertiesPropertySourceLoader`,可以对着源码直接`ctrl+cv`,而后改一下名字,即可,两者放在同一包,`OriginTrackedPropertiesLoader`访问权限默认是包私有,自定义的可以改!
> 注意:为了让自定义的`CustomizedPropertiesPropertySourceLoader `优先级高于系统自带的`PropertiesPropertySourceLoader`,需要添加`@Order`注解,系统默认优先级最低(2147483647),我们直接`Ordered.LOWEST_PRECEDENCE - 1`
@Order(Ordered.LOWEST_PRECEDENCE - 1)
public class CustomizedPropertiesPropertySourceLoader implements PropertySourceLoader {
... // 对着源码直接 ctrl+cv
// 什么都不用改标签:自定义,spring,CharacterReader,乱码,CustomizedPropertiesPropertySourceLoader,源码,config
来源: https://www.cnblogs.com/dada-hua/p/16052898.html