springboot springcloudconfigServer 读取本地配置中文乱码 ,新建处理格式

转载请注明出处

spring boot 在读取本地文件方式时,中文乱码,但读取application.properties不乱码,用文本工具查看resorces下的application.properties,发现中文格式是iso-8859-1编码显示,原因找到,编辑器工具会自动转编码

查看源码,看到底层调用Properties.load()时,输入的流只支持8859-1.

一种解决方法:修改代码,新增一种配置文件格式,解决中文乱码

下面新增**.prop格式为例

实现处理类, 主要在props.load()做修改

package com.dl.qzj.txcard.config.common;

import org.springframework.boot.env.PropertySourceLoader;
import org.springframework.core.env.PropertiesPropertySource;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.Resource;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;

/**
 * @author xingguanghui
 * @create 2018-03-14 21:30
 **/
public class MyPropertiesHandler implements PropertySourceLoader {
    public MyPropertiesHandler() {
    }

    @Override
    public String[] getFileExtensions() {
        return new String[]{"prop"};
    }

    @Override
    public PropertySource<?> load(String name, Resource resource, String profile) throws IOException {
        if (profile == null) {
            Properties properties = getProperties(resource);
            if (!properties.isEmpty()) {
                PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource(name, properties);
                return new PropertiesPropertySource(name, properties);
            }
        }
        return null;
    }

    private Properties getProperties(Resource resource){
        Properties properties= new Properties();
        try(InputStream inputStream = resource.getInputStream();){
            properties.load(new InputStreamReader(inputStream, "utf-8"));
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return properties;
    }
}

在项目路径下新建 META-INF 文件夹 spring.factories 文件做配置

org.springframework.boot.env.PropertySourceLoader=com.dl.qzj.txcard.config.common;.MyPropertiesHandler

重启项目,可以处理 ***.prop 格式的配置文件,中文不会乱码

猜你喜欢

转载自my.oschina.net/u/3560494/blog/1634974