Spring Boot默认属性编码更改?

我正在尝试寻找一种方法来设置@ValueSpring引导中通过application.property文件中的注释访问的属性的UTF-8编码。到目前为止,我已经通过创建一个bean成功地将编码设置为我自己的属性源:

@Bean

@Primary

public PropertySourcesPlaceholderConfigurer placeholderConfigurer(){

PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();

configurer.setLocation(new ClassPathResource("app.properties");

configurer.setFileEncoding("UTF-8");

return configurer;

}

这种解决方案存在两个问题。一次,它不适用于Spring Boot默认使用的“

application.properties”位置(http://docs.spring.io/spring-

boot/docs/current/reference/html/boot-features-external-config .html#boot-

features-external-config),我被迫使用其他文件名。

另一个问题是,我剩下的工作是手动定义和排序多个源的受支持位置(例如,在jar与外部jar属性文件中,等等),从而重做已经完成的工作。

我如何获得对已配置的PropertySourcesPlaceholderConfigurer的引用,并在应用程序初始化的正确时间更改它的文件编码?

编辑:也许我在其他地方犯了错误?这就是造成我实际问题的原因:当我使用application.properties允许用户将个人名称应用于从应用程序发送的电子邮件时:

@Value("${mail.mailerAddress}")

private String mailerAddress;

@Value("${mail.mailerName}")

private String mailerName; // Actual property is Święty Mikołaj

private InternetAddress getSender(){

InternetAddress sender = new InternetAddress();

sender.setAddress(mailerAddress);

try {

sender.setPersonal(mailerName, "UTF-8"); // Result is Święty Mikołaj

// OR: sender.setPersonal(mailerName); // Result is ??wiÄ?ty Miko??aj

} catch (UnsupportedEncodingException e) {

logger.error("Unsupported encoding used in sender name", e);

}

return sender;

}

当我placeholderConfigurer添加了如上所示的bean并将我的属性放置在“

app.properties”中时,它可以重新保存。只是将文件重命名为’application.properties’会破坏它。

回答:

显然,Spring Boot加载的属性ConfigFileApplicationListener以ISO

8859-1字符编码进行编码,这是设计使然并符合格式规范的。

另一方面,.yaml格式开箱即用地支持UTF-8。一个简单的扩展名更改为我解决了这个问题。

以上是 Spring Boot默认属性编码更改? 的全部内容, 来源链接: utcz.com/qa/407426.html

回到顶部