Srping提供了PropertyPlaceholderConfigurer,它是一个容器后处理器,负责读取properties属性文件里的属性值,并将这些属性值设置成Spring配置文件的元数据。
如定义Properties类:
package com.custle.spring;
/**
 * Created by admin on 2018/3/2.
 */
public class Properties {
    private String name;
    private Integer age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}
在XML中为Properties类通过读取properties文件获取属性值:
<?xml version="1.0" encoding="UTF-8"?>
<beans 
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                                   http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--引用MyProperty.properties-->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location">
            <value>MyProperty.properties</value>
        </property>
    </bean>
    <bean id="testPro" class="com.custle.spring.Properties">
        <property name="name" value="${myProperty.name}"/>
        <property name="age" value="${myProperty.age}"/>
    </bean>
</beans>
MyProperty.properties配置文件:
myProperty.name = propertyName
myProperty.age = 13
测试程序:
package com.custle.spring.test;
import com.custle.spring.Properties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * Created by admin on 2018/3/2.
 */
public class PropertyTest {
    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring-property.xml");
        Properties testPro = ac.getBean("testPro", Properties.class);
        System.out.println(testPro.getName() + "现在" + testPro.getAge() + " 了");
    }
}
控制台输出:
propertyName现在13 了
如果需要读取多个perperties文件的话,将配置文件改为如下方法:
<!--引用MyProperty.properties-->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>MyProperty.properties</value>
                <!--如果有多个配置文件继续列出-->
            </list>
        </property>
    </bean>
在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.xsd
                            http://www.springframework.org/schema/context
                            http://www.springframework.org/schema/context/spring-context.xsd">
    <!--引用MyProperty.properties文件-->
    <context:property-placeholder location="MyProperty.properties"/>
    <bean id="testPro" class="com.custle.spring.Properties">
        <property name="name" value="${myProperty.name}"/>
        <property name="age" value="${myProperty.age}"/>
    </bean>
    
</beans>
 
 
 
 
 
 