스프링 부트의 application.property 파일에서 @Value
annotation을 통해 액세스되는 속성에 대해 UTF-8 인코딩을 설정하는 방법을 찾으려고합니다. 지금까지 bean을 생성하여 내 자신의 속성 소스로 인코딩을 성공적으로 설정했습니다 :봄 부팅 기본 속성 인코딩 변경?
@Bean
@Primary
public PropertySourcesPlaceholderConfigurer placeholderConfigurer(){
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
configurer.setLocation(new ClassPathResource("app.properties");
configurer.setFileEncoding("UTF-8");
return configurer;
}
이러한 솔루션은 두 가지 문제점을 제시합니다. 한 번, 스프링 부트 (http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config)가 기본적으로 사용하는 "application.properties"위치에서는 작동하지 않으며 다른 파일 이름을 사용해야합니다.
다른 문제는 수동으로 정의하고 여러 소스 (예 : jar와 jar 속성 파일 외)에서 지원되는 위치를 수동으로 정의하고 순서를 지정하여 작업이 이미 완료되었다는 것입니다.
이미 구성된 PropertySourcesPlaceholderConfigurer에 대한 참조를 얻고 응용 프로그램 초기화가 필요할 때 파일 인코딩을 변경하는 방법은 무엇입니까?
편집 : 아마도 내가 다른 곳에서 실수를 저지르고 있습니까? 이것은 나를 위해 실제 문제를 일으키는 것입니다 : 추가 위의 그림과 같이 내가 placeholderConfigurer
콩이있을 때
@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;
}
, 내 재산을 배치 : 나는 할 수 있도록 application.properties을 사용하면 사용자가 응용 프로그램에서 보낸 이메일에 개인 이름을 적용 inside 'app.properties'그것은 잘된 것입니다. 파일 이름을 'application.properties'로 변경하면 문제가 발생합니다.
을 그 일을하기 전에, 더 간단한 해결책이없는 확신? 환경 변수를 사용하고 특별한 문제없이 UTF-8을 사용하여 application.properties를 사용했습니다. 정확히 당신이 겪고있는 문제는 무엇입니까? –
@AlessandroSantini 나는 그것이 나를 위해 일으키는 특별한 문제로 질문을 업데이트했다. – JockX
클래스를 디버깅하는 경우 오류가 표시됩니까? 출력 문제처럼 들립니다. – chrylis