Изменение кодировки свойств Spring Boot по умолчанию?
Я пытаюсь найти способ установить кодировку UTF-8 для свойств, доступ к которым осуществляется через@Value
аннотация из файлов application.property при загрузке Spring. До сих пор я успешно установил кодирование для своих собственных источников свойств, создав бин:
@Bean
@Primary
public PropertySourcesPlaceholderConfigurer placeholderConfigurer(){
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
configurer.setLocation(new ClassPathResource("app.properties");
configurer.setFileEncoding("UTF-8");
return configurer;
}
Такое решение представляет две проблемы. На этот раз он НЕ работает с расположениями «application.properties», используемыми по умолчанию Spring Boot (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
бин, как показано выше, добавлен, и поместите мое свойство в app.properties, оно будет восстановлено просто отлично. Просто переименование файла в «application.properties» нарушает его.