spring管理属性配置文件properties——使用PropertyPlaceholderConfigurer

来源:互联网 发布:苏州市那美网络 编辑:程序博客网 时间:2024/05/29 19:23

上一篇文章spring管理属性配置文件properties——使用PropertiesFactoryBean中提到使用org.springframework.beans.factory.config.PropertiesFactoryBean管理属性文件,在学习过程中发现通过org.springframework.beans.factory.config.PropertyPlaceholderConfigurer也可以管理配置文件。

1.在上一个项目(spring_test)的基础上新建spring配置文件applicationContext2.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-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:annotation-config /><context:component-scan base-package="com.*"></context:component-scan><!-- <context:property-placeholder location="file:config/*.conf" ignore-unresolvable="true"/><context:property-placeholder location="classpath:*.properties" ignore-unresolvable="true"/> --><!-- 使用注解注入properties中的值 -->    <bean id="setting"        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">        <property name="ignoreUnresolvablePlaceholders" value="true" />           <property name="locations">            <list>                <value>classpath:*.properties</value>                <value>file:config/*.conf</value>            </list>        </property>        <!-- 设置编码格式 -->        <property name="fileEncoding" value="UTF-8"></property>    </bean></beans>
2.修改ConfigProperty.java:

@Component("configProperty")public class ConfigProperty {/** 作者名字 */@Value("${author_name}")private String authorName;/** 项目信息 */@Value("${project_info}")private String projectInfo;public String getAuthorName() {return authorName;}public void setAuthorName(String authorName) {this.authorName = authorName;}public String getProjectInfo() {return projectInfo;}public void setProjectInfo(String projectInfo) {this.projectInfo = projectInfo;}}
3.新建测试类:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:applicationContext2.xml"})public class ConfigPropertyTest {     @Resource(name = "configProperty")    private ConfigProperty configProperty;         /**     * 测试Spring注解获取properties文件的值     */    @Test    public void test() {        System.out.println(configProperty.getAuthorName());        System.out.println(configProperty.getProjectInfo());    } }

总结:

1.使用PropertiesFactoryBean管理属性文件获取属性的方式:

@Value("${properties_key}")
和org.springframework.beans.factory.config.PropertiesFactoryBean有点不同;

2.在spring配置文件中,对于bean的配置有这样一个配置:

<property name="ignoreUnresolvablePlaceholders" value="true" />   
这个主要是为了解决抛出cannot be resolved的异常。

0 0
原创粉丝点击