2016-07-07 6 views
1

ich einen Frühling Boot-1.3-Anwendung haben (als .war eingesetzt), die eine .properties Datei aus dem folgenden Speicherort der Lage sein, lesen muss:Frühling Boot - Laden einer .properties-Datei von WEB-INF/Ordner

WEB-INF/application.properties (außerhalb des classpath, aber in Bezug auf die App Stammordner)

... im Gegensatz zu:

WEB-INF/classes/application.properties (im classpath, wird

Was im Frühjahr Boot 1 gearbeitet automatisch) geladen. 3 war die folgende @PropertySource Anmerkung:

@SpringBootApplication 
@PropertySource(value = {"WEB-INF/application.properties"}) 
public class MyApplication { 
     public static void main(String[] args) { 
     SpringApplication.run(MyApplication.class, args); 
    } 
} 

sie korrekt die .properties Datei relativ zu der Wurzel app geholt. Dies funktioniert jedoch nach einem Update auf Spring Boot 1.4.0.RC1 nicht mehr.

Seitdem habe ich versucht, die folgenden:

@PropertySource("classpath:../application.properties") 
@PropertySource("file:WEB-INF/application.properties") 

und auch

spring.config.location=classpath:../ 
spring.config.location=file:src/main/webapp/WEB-INF/ 
spring.config.location=WEB-INF/application.properties 

Aber haben kein Glück Laden der .properties hatte.

Normalerweise würde ich die .properties Datei in den Klassenpfad einfügen, aber in diesem Fall ist dies keine Option, da unsere Bereitstellung an einem Remote-Standort funktioniert.

Ich würde auch bevorzugen, nicht einen absoluten Pfad zu verwenden, da das ein Albtraum sein wird, mit mehreren Kunden zu unterstützen.

Edit: Nur um klar zu sein - die .properties möchte ich nicht außerhalb der JAR (in meinem Fall - WAR) -Datei befinden, aber innerhalb - nur nicht auf dem Klassenpfad, sondern direkt in der WEB-INF/ Ordner wo normalerweise andere Ressourcen (Seiten, Bilder) wären.

+0

Ist es möglich, es außerhalb des Krieges zu setzen? Es wird diejenigen außerhalb eines Glases finden, aber nicht sicher über Kriege. Siehe: [Externalized Configuration] (http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html) – mekazu

+0

Leider nicht - das '/ WEB-INF/Der Speicherort von conf/application.properties ist gegeben. – vtosh

+0

Mögliches Duplikat von [Spring Boot log4j Datei extern zu jar?] (Http://stackoverflow.com/questions/32356997/spring-boot-log4j-file-external-to-jar) – luboskrnac

Antwort

1

Wie ich in doppelter Ausführung SO Frage erwähnt:

Setzen Sie diese Zeile in Ihre application.properties:

logging.config=file:log4j.xml 

Zweite Option ist Systemvariable -Dlogging.config=file:log4j.xml

In diesem Fall passiert es erwartet wird, befindet sich im aktuellen Verzeichnis außerhalb der JAR-Datei.

REAKTION AUF KOMMENTAR:

Wenn Sie WAR-Datei verwenden, sind Ihre Hauptklasse überhaupt nicht verwendet. So hat PropertySource Annotation keinen Effekt dort.

+0

Wie in der Frage, die ' .properties', die ich gerne lesen würde, befindet sich nicht außerhalb der JAR-Datei (in meinem Fall WAR), sondern im Inneren. – vtosh

0

Wenn die .properties in der .war Datei gepackt ist. Dann können Sie die folgende versuchen (unter der Annahme, dass das WEB-INF Verzeichnis in der Wurzel der .war Datei befindet.

@PropertySource("classpath:/WEB-INF/conf/application.properties") 
+0

Danke, versuchte das, aber immer noch den Fehler: 'Klassenpfad Ressource [WEB-INF/conf/application.properties] kann nicht geöffnet werden, weil es nicht existiert – vtosh

Verwandte Themen