Spring Änderung der Standardkodierung der Starteigenschaften?

Ich versuche eine Möglichkeit zu finden, die UTF-8-Codierung für Eigenschaften festzulegen, auf die über @ zugegriffen wir@Value Annotation aus application.property-Dateien in Spring Boot. Bisher wurde die Codierung für meine eigenen Eigenschaftenquellen erfolgreich durch Erstellen einer Bean festgelegt:

@Bean
@Primary
public PropertySourcesPlaceholderConfigurer placeholderConfigurer(){
    PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
    configurer.setLocation(new ClassPathResource("app.properties");
    configurer.setFileEncoding("UTF-8");
    return configurer;
}

Diese Lösung weist zwei Probleme auf. Diesmal funktioniert es NICHT mit "application.properties" -Positionen, die standardmäßig von Spring Boot verwendet werden http: //docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-confi), und ich bin gezwungen, andere Dateinamen zu verwenden.

Und das andere Problem ist, dass ich damit die Möglichkeit habe, unterstützte Speicherorte für mehrere Quellen manuell zu definieren und zu bestellen (z. B. in jar vs outside jar properties file, usw.), um einen bereits erledigten Job zu wiederholen.

Wie erhalte ich einen Verweis auf den bereits konfigurierten PropertySourcesPlaceholderConfigurer und ändere dessen Dateicodierung zum richtigen Zeitpunkt der Anwendungsinitialisierung?

Edit: Vielleicht mache ich woanders einen Fehler? Dies ist das eigentliche Problem für mich: Wenn ich application.properties verwende, damit Benutzer E-Mails, die von einer Anwendung gesendet werden, mit einem persönlichen Namen versehen können:

@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;
}

Wenn ich habeplaceholderConfigurer Bean wie oben gezeigt hinzugefügt, und platzieren Sie meine Eigenschaft in "app.properties", es wird ganz gut entfernt. Durch einfaches Umbenennen der Datei in "application.properties" wird sie beschädigt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage