一.无法获取到配置文件
1.git上面的文件名只能为 {application}-{profile}.yml 或 {application}-{profile}.properties(注: {application} 要与项目中微服务名称一直既spring.application.name的值,{profile}就是配置文件的版本,项目有开发版本、测试环境版本、生产环境版本等)
2.config client maven依赖为
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
config service maven依赖为
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
注意!!!
client中千万千万不能引入service的依赖!
client中千万千万不能引入service的依赖!
client中千万千万不能引入service的依赖!
二.配置文件中文乱码
乱码的原因
spring 默认使用 org.springframework.boot.env.PropertiesPropertySourceLoader 来加载配置,底层是通过调用 Properties 的 load 方法,而load方法输入流的编码是 ISO 8859-1 ,所以会出现中文乱码问题。
解决方式
自定义属性源加载器,实现 PropertySourceLoader 接口
public class MyPropertiesHandler implements PropertySourceLoader {
private static final Logger logger = LoggerFactory.getLogger(MyPropertiesHandler.class);
@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) {
Properties properties = new Properties();
InputStream inputStream = null;
try {
inputStream = resource.getInputStream();
properties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); // 设置为UTF-8
inputStream.close();
} catch (IOException e) {
logger.error("load inputstream failure...", e);
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
logger.error("close IO failure ....", e);
}
}
}
return (Map) properties;
}
}
在 resources 文件夹下,创建 META-INF 文件夹,再创建 spring.factories 文件
# 修改系统内置的编码,值为你实现 PropertySourceLoader 接口的类路径
org.springframework.boot.env.PropertySourceLoader=com.example.config.MyPropertiesHandler