2017-04-30 1 views
0

私は、Spring XML設定ファイルで利用できるいくつかのプロパティファイルを用意しています。例えば、hello.xmlに:Spring BeanのXMLファイルでプロパティファイルを使用するには?

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

Javaコードで:hello.properties

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()); 

foo.color = blue 

は、どのように私は春・オブジェクト定義にプロパティファイルを利用できるようにするのですか?

更新

私はいくつかの古い春のコードを移植しています。それは一種の、このように見えた(バージョン2.5):

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); 

このコードは非推奨マークされていた、と私は他の問題を抱えていたので、私は新しい方法にポートにそれを試してみました。

+0

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

+0

XMLファイルでプロパティへのパスをハードコードする方法を示しますが、 Javaコードに 'File'オブジェクトがいくつかありますか? –

答えて

-1

また、Beanデータをループして、その内容をJSPに表示したい場合もあります。

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> 

参考:Spring.io

+0

私の質問はJSPとは関係ありません。私は豆を定義するために、春の設定ファイルで '$ {property}'構文を使用しようとしています。 –

1

あなたはPropertyPlaceholderConfigurerの助けを借りてJavaコードでmore.propertiesを読むことができます。なぜあなたが本当にFile Objectとして読む必要があるのか​​分かりません。 hello.propertiesで

hello.xmlファイルで

<!-- 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> 

Javaコードで

foo.shape=square 

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("hello.xml"); 
Foo foo = (Foo) ctx.getBean("theFoo"); 
System.out.println("Color : " + foo.getColor() +" Shape : " + foo.getShape()); 
ファイルmore.propertiesで

foo.color=blue 

を提出0

+0

Fileオブジェクトは、従来のコードを使用しているためです。 –

+0

あなたは春を使わずに、以下のようなものを見ようとしていましたか? https://www.mkyong.com/java/java-properties-file-examples/ これらのプロパティをFooオブジェクトにロードする必要がある場合は、オートワイヤーして値を設定できます。 – Jajikanth

+0

私は古いSpringコードを移植しています。私はそれを「更新」の質問に追加しました。 –

関連する問題