Ich verwendete zuvor die jetzt veraltete Klasse org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
zum Laden einer Eigenschaftendatei aus dem Dateisystem des Servers. Ich hatte die folgende Bohne definiertem:Tomcat Context-Params ignoriert in Spring webapp bei Verwendung von PropertyPlaceholder
<bean class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer">
<property name="locations" value="${config}"/>
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="searchContextAttributes" value="true"/>
<property name="contextOverride" value="false"/>
<property name="ignoreResourceNotFound" value="true"/>
<property name="searchSystemEnvironment" value="false"/>
</bean>
Die config
ist ein Argument, das übergeben wird, wenn Tomcat starten, dh
-Dconfig=/path/to/application.properties
Für die Webapp ich auch eine Kontext-Datei haben:
<Context docBase="/path/to/application.war">
<Parameter name="host" value="localhost" override="false"/>
<Parameter name="port" value="8080" override="false"/>
</Context>
Wenn die Datei .properties
, die durch das Argument -Dconfig
angegeben wird, die Eigenschaft enthält, auf die eine andere Bean verweist, wird der Wert auszurückgegebenDatei wird verwendet, andernfalls wird der Wert aus der XML-Kontextdatei verwendet.
Dies ermöglichte mir, eine Reihe von Standardeigenschaften mit der WAR bereitgestellt und wenn nötig, konnte ich eine .properties
Datei angeben, um bestimmte Werte zu überschreiben.
Jetzt aktualisiere ich, um die neuen Eigenschaften Abstraktionen in Frühling 3.1 zu verwenden, aber ich kann nicht scheinen, herauszufinden, was der äquivalente Ansatz dazu ist?
Ich habe die gleiche Kontext-Datei und in der gleichen Art und Weise eingesetzt Krieg, und ich habe nun folgend in der Anwendung:
<context:property-placeholder
location="${config}"
system-properties-mode="OVERRIDE"
ignore-resource-not-found="true"
ignore-unresolvable="true"/>
Dies findet und nutzt die Eigenschaften von der Eigenschaften-Datei, aber es funktioniert nicht Verwenden Sie die Werte aus der Kontext-XML-Datei.
Wie bekomme ich meine Anwendung, die Kontextparameter zu verwenden, wenn Sie diesen neuen Eigenschaft-Platzhalter verwenden?
Danke.
Ich glaube nicht, dass Sie meinen ursprünglichen Beitrag vollständig verstanden haben. Ich habe die Platzhalter bereits mithilfe der Eigenschaftendatei aufgelöst. Die Frage fragt nach der Verwendung von Kontextparametern. – C0deAttack
Haben Sie den Link vom ersten Satz verfolgt? Der Rest der Antwort ist nur ein Add-on für andere Entwickler, die .properties und application.properties verwenden. – luksmir
Das Problem betrifft Kontextparameter - keine Eigenschaftendateien. – C0deAttack