其他分享
首页 > 其他分享> > spring cloud config (中文乱码问题)

spring cloud config (中文乱码问题)

作者:互联网


a.问题描述:当从远端拉取的properties配置文件中含有中文,呈现乱码

b.产生原因:
spring 中默认使用PropertiesPropertySourceLoader进行properties文件解析,在解析过程会利用OriginTrackedPropertiesLoader创建CharacterReader, 而问题就出现在这个CharacterReader身上,内部指定了ISO_8859_1编码,导致解析中文乱码!

c.解决方法:
对于spring cloud config组件由两部分组成,分别是configServerconfigClientconfigClientconfigServer发起配置请求,configServergithub上拉取配置并在本地缓存,而后对配置文件进行解析,最后将配置发送个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