问题描述
尽管Java属性文件传统上仅支持ISO-8859-1 JDK 9 and onward supports properties files encoded in UTF-8。而且,尽管只有JDK 9+支持带有内置默认属性文件读取的UTF-8,但在任何Java版本中都可以使用与之相同的技术,将属性文件环绕起来以添加UTF-8支持并回退到ISO-8859 -1是为了向后兼容(与JDK实现一样)。
我是Spring Boot的新手,正在阅读有关它带来的所有漂亮属性配置的信息。 Spring Boot是否支持从以UTF-8编码的属性文件中加载属性?如果没有,那么在Spring Boot代码中,属性文件读取在哪里进行了合并,以便我可以添加此功能并提交拉取请求?
解决方法
默认情况下,Spring仅支持ISO-8859-1属性。但是,有几种方法可以解决此问题:
- 使用
@Async("threadPoolTaskExecutor") public CompletableFuture<ServiceAccountDTO> registerAccountInService(final String uuid,final ServiceEnum serviceEnum,final Date creationDate,final Date realCreationDate) { .. }
属性文件。 - 用
application.yaml
注释@Configuration类 - 使用Java参数运行您的应用以使用UTF-8文件:
@PropertySource(value = "classpath:/custom-name-of-application.properties",encoding="UTF-8")
@PropertySource(value = "classpath:application-${env}.properties",encoding = "UTF-8")
使用
@PropertySource(value = "classpath:application.properties",encoding = "UTF-8")
在类级别,则可以使用@value检索单个属性,但是需要定义此bean:`
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() {
return new PropertySourcesPlaceholderConfigurer();
}
@Value("${my.property1}")
private String property1;
`