Я пытаюсь найти способ кодирования UTF-8 для свойств, доступных через @Value
аннотация из файлов application.property в Spring boot. До сих пор я успешно установил кодирование в свои собственные источники свойств, создав компонент:Изменение настроек свойств Spring Boot по умолчанию?
@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 vs outside jar properties и т. Д.), Тем самым переделывая уже выполненную работу.
Как получить ссылку на уже настроенные объекты 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» прерывает его.
Перед тем как сделать это, вы уверены, что нет простых решений? Я использую переменные среды, и я использовал application.properties, используя UTF-8 без какой-либо конкретной проблемы. В чем именно проблема, которую вы испытываете? –
@AlessandroSantini Я обновил вопрос с конкретной проблемой, которую он вызывает для меня. – JockX
Если вы отлаживаете класс, вы видите ошибку? Это больше похоже на проблему вывода. – chrylis