Gar*_*ryF 8 java xml spring properties
Spring有一个非常方便的便利类,名为PropertyPlaceholderConfigurer,它接受一个标准的.properties文件并将其中的值注入到bean.xml配置中.
有没有人知道一个完全相同的类,并以相同的方式与Spring集成,但接受配置的XML文件.具体来说,我正在考虑Apache digester风格的配置文件.这样做很容易,我只是想知道是否有人.
建议?
我刚试过这个,它应该可以正常工作.
PropertiesPlaceholderConfigurer包含setPropertiesPersister方法,因此您可以使用自己的PropertiesPersister子类.默认的PropertiesPersister已经支持XML格式的属性.
只是为了向您展示完整的代码:
JUnit 4.4测试用例:
package org.nkl;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@ContextConfiguration(locations = { "classpath:/org/nkl/test-config.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
public class PropertyTest {
@Autowired
private Bean bean;
@Test
public void testPropertyPlaceholderConfigurer() {
assertNotNull(bean);
assertEquals("fred", bean.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
spring配置文件 test-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
">
<context:property-placeholder
location="classpath:/org/nkl/properties.xml" />
<bean id="bean" class="org.nkl.Bean">
<property name="name" value="${org.nkl.name}" />
</bean>
</beans>
Run Code Online (Sandbox Code Playgroud)
XML属性文件properties.xml
- 有关用法的说明,请参见此处.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="org.nkl.name">fred</entry>
</properties>
Run Code Online (Sandbox Code Playgroud)
最后是豆子:
package org.nkl;
public class Bean {
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助...