springboot springcloudconfigServer 讀取本地配置中文亂碼 ,新建處理格式

轉載請註明出處java

spring boot 在讀取本地文件方式時,中文亂碼,但讀取application.properties不亂碼,用文本工具查看resorces下的application.properties,發現中文格式是iso-8859-1編碼顯示,緣由找到,編輯器工具會自動轉編碼spring

查看源碼,看到底層調用Properties.load()時,輸入的流只支持8859-1.app

一種解決方法:修改代碼,新增一種配置文件格式,解決中文亂碼編輯器

下面新增**.prop格式爲例ide

實現處理類, 主要在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 文件作配置ui

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

重啓項目,能夠處理 ***.prop 格式的配置文件,中文不會亂碼編碼

相關文章
相關標籤/搜索