Java教程

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 cloud config (中文乱码问题)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!