Spring:设置一个简单的PropertyPlaceholderConfigurer示例

时间:2009-02-17 16:28:45

标签: spring

对此的解决方案可能非常简单,但我不确定我缺少什么。这是我的所有内容,PropertyPlaceholderConfigurer不会取代${...}

/* ---- org/company/springtest/Test.java: ---- */
package org.company.springtest;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;

public class Test {
    public static void main( String... args ) {
         Resource res = new FileSystemResource("conf/xml/context2.xml");
             XmlBeanFactory beanFactory = new XmlBeanFactory(res);
             TestApp app = (TestApp) beanFactory.getBean("testApp");
             app.print();
    }   
}


/* ---- org/company/springtest/TestApp.java: ---- */
package org.company.springtest;
import org.springframework.beans.factory.annotation.Required;

public class TestApp {
    private String m_message;

    public void setMessage( String message ) {
         m_message = message;
    }

    public void print() {
        System.out.println(m_message);
    }
}

/* ---- conf/xml/context2.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:lang="http://www.springframework.org/schema/lang" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations" value="file:conf/xml/test.properties" />
    </bean>
    <bean id="testApp" class="org.company.springtest.TestApp">
         <property name="message" value="${test.message}"/>
    </bean>
</beans>

/* ---- conf/xml/test.properties: ---- */
test.message=Hello world!

以下是运行Test时的输出:

Feb 17, 2009 11:23:06 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from file [C:\eclipse\workspace\SpringTest\conf\xml\context2.xml]
${test.message}

看起来配置器没有替换属性值......

3 个答案:

答案 0 :(得分:5)

也许尝试使用ApplicationContext代替BeanFactory

答案 1 :(得分:2)

答案 2 :(得分:2)

而不是Resource res = File..... 使用下面的

ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/xml/context2.xml");
TestApp test = (TestApp) ctx.getBean("testApp");
test.print();

你会得到结果。

对于Resource,它不会读取我们在路径中指定的属性。