我有一些我希望在Spring XML配置文件中提供的属性文件。例如,在hello.xml
:
<bean id="theFoo" class="learnspring.Foo">
<property name="color" value="${foo.color}"/>
</bean>
在Java代码中:
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
:
foo.color = blue
如何使属性文件可用于Spring对象定义?
更新
我正在移植一些旧的Spring代码。 (版本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 :(得分:1)
您可以在PropertyPlaceholderConfigurer的帮助下阅读java代码中的more.properties。不确定为什么你真的需要读作文件对象。
在hello.xml文件中
[sent]
在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
在Java代码中
foo.shape=square
答案 1 :(得分:-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