springcloud config自动刷新中文乱码问题
乱码介绍
在使用 spring cloud config 时,如果在 git仓库中的properties 文件里面有中文的话,会出现乱码。
乱码的原因是:spring 默认使用org.springframework.boot.env.PropertiesPropertySourceLoader 来加载配置,底层是通过调用 Properties 的 load 方法,而load方法输入流的编码是 ISO 8859-1
解决方法:
1. 实现org.springframework.boot.env.PropertySourceLoader 接口,重写 load 方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
@Slf4j public class MyPropertiesHandler implements PropertySourceLoader { @Override public String[] getFileExtensions() { return new String[]{"properties", "xml"}; } @Override public List<PropertySource<?>> load(String name, Resource resource) throws IOException { Map<String, ?> properties = loadProperties(resource); if (properties.isEmpty()) { return Collections.emptyList(); } return Collections.singletonList(new OriginTrackedMapPropertySource(name, properties)); } private Map<String, ?> loadProperties(Resource resource) throws IOException { String filename = resource.getFilename(); if (filename != null && filename.endsWith(".xml")) { return (Map) PropertiesLoaderUtils.loadProperties(resource); } return new OriginTrackedPropertiesLoader(resource).load(); } }
2.上述代码中用的OriginTrackedPropertiesLoader类为spring框架中的,将该类直接复制到本地,并将157行的ISO8859-1编码修改为utf-8,并在自己实现的类中使用本地的OriginTrackedPropertiesLoader,
3.在 resources下新建 META-INF 文件夹,新建一个 spring.factories 文件
org.springframework.boot.env.PropertySourceLoader=com.***.***.MyPropertiesHandler
上述改动均需要放在config server端,config client端不做任何改动。
4.application.yaml中 增加如下配置:
server.tomcat.uri-encoding=utf-8
spring.http.encoding.charset=utf-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
management.endpoint.health.show-details : always
management.endpoints.web.exposure.include: ${prometheus,refresh}
大功告成,但愿能拯救水深火热的广大猿友!
自动刷新:
1. 在config client项目中增加 相关actuator jar包
gradle方式: compile ‘org.springframework.boot:spring-boot-starter-actuator’
maven方式: 吧啦吧啦
2. 在使用到配置参数的类上 增加@RefreshScope
3. 修改完配置文件里的参数后,需要调用 服务层的 刷新接口: http://localhost:port/actuator/refresh
如果,您认为阅读这篇博客让您有些收获, 如果,您希望更容易地发现我的新博客,不妨关注一下。因为,我的写作热情也离不开您的肯定支持。
感谢您的阅读,如果您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客。
因为有小孩,兼职卖书,路过的朋友有需要低价购买图书、点读笔、纸尿裤等资源的,可扫最上方二维码,质量有保证,价格很美丽,欢迎咨询! 欢迎关注微信公众号:18般武艺