2017-04-30 14 views
0

Spring XML 설정 파일에서 사용할 수있게 해주는 속성 파일이 있습니다.스프링 빈 XML 파일에서 속성 파일을 사용하는 방법은 무엇입니까?

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

자바 코드에서 :

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

hello.properties에서 : hello.xml 예를 들어

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와의 도움으로 자바 코드에서 more.properties을 읽을 수 . 왜 당신이 정말로 File Object로 읽어야하는지 확신 할 수 없습니다. hello.xml 파일에서

hello.properties에서

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

는 more.properties에서

foo.color=blue 

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("hello.xml"); 
Foo foo = (Foo) ctx.getBean("theFoo"); 
System.out.println("Color : " + foo.getColor() +" Shape : " + foo.getShape()); 
자바 코드에서

foo.shape=square 

파일 파일 0

+0

File 객체는 기존 코드로 작업하기 때문에 발생합니다. –

+0

확인. 봄을 사용하지 않고 아래와 같은 것을 보려고 했습니까? https://www.mkyong.com/java/java-properties-file-examples/ 이러한 속성을 Foo 객체에로드해야하는 경우 자동 레이아웃하고 값을 설정할 수 있습니다. – Jajikanth

+0

이전 스프링 코드를 이식하고 있습니다. 나는 그것을 "Update"라는 질문에 추가했다. –