2016-12-01 4 views
0

Ich habe zwei messages.properties Dateien. Eine befindet sich in resources und eine andere befindet sich außerhalb meiner .jar-Datei in einem Verzeichnis mit dem Namen etc.Spring Boot: externe messages.properties hinzugefügt werden, aber nicht verwendet

Das ist meine PropertiesConfiguration Klasse:

@Configuration 
public class PropertiesConfiguration { 

    @Bean 
    public PropertyPlaceholderConfigurer properties() { 
     final PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); 
     ppc.setIgnoreResourceNotFound(true); 

     final List<Resource> resourceLst = new ArrayList<Resource>(); 

     resourceLst.add(new FileSystemResource("etc/application.properties")); 
     resourceLst.add(new FileSystemResource("etc/messages.properties")); 
     resourceLst.add(new FileSystemResource("etc/messages_et.properties")); 

     ppc.setLocations(resourceLst.toArray(new Resource[]{})); 

     return ppc; 
    } 
} 

In den Protokollen ich sehe:

11:18:43.764 INFO [main] PropertyPlaceholderConfigurer    - Loading properties file from file [C:\Users\deniss\IdeaProjects\repgen\etc\application.properties] 
11:18:43.764 WARN [main] PropertyPlaceholderConfigurer    - Could not load properties from file [C:\Users\deniss\IdeaProjects\repgen\etc\application.properties]: etc\application.properties (The system cannot find the file specified) 
11:18:43.764 INFO [main] PropertyPlaceholderConfigurer    - Loading properties file from file [C:\Users\deniss\IdeaProjects\repgen\etc\messages.properties] 
11:18:43.764 INFO [main] PropertyPlaceholderConfigurer    - Loading properties file from file [C:\Users\deniss\IdeaProjects\repgen\etc\messages_et.properties] 

Wie ich verstehe meine messages.properties von etc geladen wird. Obwohl die Anwendung funktioniert, werden die Werte nicht verwendet. Sie kommen von Standard messages.properties in meinem resources Projektordner. Mache ich etwas falsch?

+1

Sie eine Nachrichtenquelle wollen, aber Sie verwenden Eigenschaft Platzhalter –

+0

@sashok_bg Sie richtig sind. Ich habe eine weitere @Configuration-Bean zu meinem Projekt hinzugefügt. '@Bean \t public ResourceBundleMessageSource messageSource() {' Das Problem ist, dass ich nicht weiß, wie man 'messageSource.setBasename (" ") auf die Dateien außerhalb meiner .jar zeigt. '" classpath "' funktioniert offensichtlich nicht. –

+0

Laut Federdocs ist es nur möglich, einen Klassenpfad hinzuzufügen, dh innerhalb der .jar. Schade. –

Antwort

0

Ich denke, es hier für diese Frage eine Antwort lautet: Spring Boot and multiple external configuration files

, die früher für mich gearbeitet, so lohnt es sich um einen Versuch zu geben!

+0

Ich habe diese Lösungen ausprobiert und ich bekomme immer noch das gleiche Ergebnis. Ich denke, das hat etwas zu tun, dass Nachrichten Eigenschaften Datei einen anderen Ansatz erfordern. –

0

Zunächst einmal klar über die Konfiguration von Spring Boot.

In pom.xml, bestätigen einmal Layout als "ZIP"

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <configuration> <!-- added --> 
       <layout>ZIP</layout> <!-- to use PropertiesLaunchar --> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Weil, Für das PropertiesLauncher das Layout "ZIP" und stellen Sie sicher vermeiden verwenden @EnableAutoConfiguration ist.

oder Verwenden Sie @PropertySource-Annotation für externe Eigenschaften. (Siehe: Spring Boot PropertySource).

Dieses Thema wurde bereits von StackOverflow diskutiert.

Siehe:

Spring Boot: Is it possible to use external application.properties files in arbitrary directories with a fat jar?

Spring @Configuration file with PropertyPlaceholderConfigurer bean doesn't resolve @Value annotation

+0

In meinem Post gibt es nichts über application.properties. Ich frage nach messages.properties. Das ist anders. Application.properties funktioniert gut mit meinem aktuellen Setup ohne die erwähnten Anpassungen von Ihrer Seite. –

Verwandte Themen