with - spring system properties




spring PropertyPlaceholderConfigurer und context: property-placeholder (2)

Folgendes hat für mich funktioniert:
<context:property-placeholder location="file:src/resources/spring/AppController.properties"/>

Irgendwie wählt "classpath: xxx" die Datei nicht aus.

Ich habe folgende Bean Deklaration:

  <bean
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>WEB-INF/classes/config/properties/database.properties</value>
                <value>classpath:config/properties/database.properties</value>
            </list>
        </property>
        <property name="ignoreResourceNotFound" value="true"/>
    </bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

Jetzt möchte ich über PropertyPlaceholderConfigurer in folgendes Format wechseln:

<context:component-scan base-package="org.example.config"/>
<util:properties id="jdbcProperties" 
           location="classpath:config/properties/database.properties"/>
  1. ignoreResourceNotFound ignoriert die Eigenschaft beim Ausführen. zB: Beim Testen der Anwendung ignoriert WEB-INF / .. den Pfad (da maven Projekt- und Eigenschaftendatei unter src / main / resources / .. steht), während der Start der Webanwendung ignoriert andere Eigenschaft den Pfad, den ich mit implementieren muss oberes Format.
  2. sollte in der Lage sein, mehrere Eigenschaftendateien wie database.properties, test.properties usw. hinzuzufügen.
  3. kann ich im Frühling 3 Annotation statt dieser XML-Dateien zum DB-Laden verwenden, wie kann ich das tun? da ich nur eine xml-datei (wie oben angegeben) verwende, um db-stuff zu laden.

Ich benutze Spring 3 Framework.


Zunächst müssen Sie diese beiden Standorte nicht definieren. Verwenden Sie einfach classpath:config/properties/database.properties . In einer WAR ist WEB-INF/classes ein Klassenpfad-Eintrag, also wird es gut funktionieren.

Danach denke ich, was du meinst, willst du die schemabasierte Konfiguration von Spring verwenden, um einen Konfigurator zu erstellen . Das würde so gehen:

<context:property-placeholder location="classpath:config/properties/database.properties"/>

Beachten Sie, dass Sie "ignoreResourceNotFound" nicht mehr ignorieren müssen. Wenn Sie die Eigenschaften separat mit util:properties :

<context:property-placeholder properties-ref="jdbcProperties" ignore-resource-not-found="true"/>

Es gibt normalerweise keinen Grund, sie getrennt zu definieren.





spring