2017-04-30 3 views
0

Ich habe einige Eigenschaftendateien, die ich in den Spring XML-Konfigurationsdateien zur Verfügung stellen möchte. Zum Beispiel in hello.xml:Wie verwendet man eine Eigenschaftendatei in Spring Beans XML-Datei?

<bean id="theFoo" class="learnspring.Foo"> 
    <property name="color" value="${foo.color}"/> 
</bean> 

In Java-Code:

ApplicationContext ac = new ClassPathXmlApplicationContext("hello.xml"); 
File props = new File("path/to/hello.properties"); 
File moreProps = new File("path/to/more.properties"); 
// What to do here? 
Foo foo = (Foo)ac.getBean("theFoo"); 
System.out.println(foo.getColor()); 

In hello.properties:

foo.color = blue 

Wie kann ich die Eigenschaften des Federobjektdefinitionen-Dateien verfügbar?

aktualisiert

ich einigen alten Frühling Code zu portieren. (Version 2.5) Es sah ein bisschen wie folgt aus:

XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource(xmlFile)); 
PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); 
cfg.setLocations(new Resource[] { 
    new ClassPathResource(propsResourcePath), 
    new FileSystemResource(propsFile)) }); 

cfg.postProcessBeanFactory(factory); 
new GenericApplicationContext(factory); 

Dieser Code markiert wurde als veraltet, und ich hatte andere Probleme, so habe ich versucht, die Portierung auf die neue Art und Weise.

+0

Vielleicht 'PropertyPlaceHolderConfigurer'? http://docs.spring.io/spring/docs/2.5.x/reference/beans.html#beans-factory-placeholderconfigurer –

+0

Das zeigt, wie man einen Pfad zu Eigenschaften in der XML-Datei hart Code, aber was passiert, wenn ich Habe einige 'File' Objekte in Java Code? –

Antwort

-1

Falls Sie auch die Bean-Daten durchlaufen und ihren Inhalt auf Ihrem JSP anzeigen möchten.

hello.xml

<bean id="productManager" class="springapp.service.SimpleProductManager"> 
    <property name="products"> 
     <list> 
      <ref bean="product1"/> 
      <ref bean="product2"/> 
      <ref bean="product3"/> 
     </list> 
    </property> 
</bean> 

<bean id="product1" class="springapp.domain.Product"> 
    <property name="description" value="Lamp"/> 
    <property name="price" value="5.75"/> 
</bean> 

<bean id="product2" class="springapp.domain.Product"> 
    <property name="description" value="Table"/> 
    <property name="price" value="75.25"/> 
</bean> 
... 

hello.jsp

<c:forEach items="${model.products}" var="prod"> 
    <c:out value="${prod.description}"/> 
    $<c:out value="${prod.price}"/> 
</c:forEach> 

Referenz: Spring.io

+0

Meine Frage hat nichts mit JSP zu tun. Ich versuche, die '$ {property}' - Syntax in der Spring-Konfigurationsdatei zu verwenden, um die Beans zu definieren. –

1

Sie konnten die more.properties in Java-Code mit Hilfe von PropertyPlaceholderConfigurer lesen . Nicht sicher, warum Sie wirklich als Dateiobjekt lesen müssten.

In hello.xml Datei

<!-- Loading all properties files from classpath --> 
    <bean id="myProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="locations"> 
      <list> 
       <value>classpath:hello.properties</value> 
       <value>classpath:more.properties</value> 
      </list> 
     </property> 
     <property name="ignoreResourceNotFound" value="true" /> 
     <property name="ignoreUnresolvablePlaceholders" value="true" /> 
     <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> 
    </bean> 
    <bean id="theFoo" class="learnspring.Foo"> 
     <property name="color" value="${foo.color}"/> 
     <property name="shape" value="${foo.shape}"/> 
    </bean> 

In hello.properties Datei

foo.color=blue 

In more.properties

foo.shape=square 

In Java-Code

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("hello.xml"); 
Foo foo = (Foo) ctx.getBean("theFoo"); 
System.out.println("Color : " + foo.getColor() +" Shape : " + foo.getShape()); 
Datei 0
+0

Die Dateiobjekte sind, weil ich mit Legacy-Code arbeite. –

+0

ok. Hast du versucht, etwas wie unten zu sehen, ohne den Frühling zu benutzen? https://www.mkyong.com/java/java-properties-file-examples/ Wenn Sie diese Eigenschaften benötigen, um auf Foo-Objekte geladen zu werden, können Sie sie automatisch starten und die Werte festlegen. – Jajikanth

+0

Ich portiere älteren Spring Code. Ich habe es unter "Update" zur Frage hinzugefügt. –

Verwandte Themen