使用UTF-8的Spring Boot属性文件

问题描述

尽管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;

`