将属性文件加载到Spring中的类

时间:2013-02-23 05:20:24

标签: spring spring-3

我正在尝试将属性文件(.properties)加载到我的类中,我在这里的另一个帖子中跟随示例:How to read values from properties file? - 但它对我不起作用。

这是我的快速实施:

的applicationContext.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"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context-3.0.xsd
     http://www.springframework.org/schema/tx
     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">


    <context:annotation-config />

    <!-- Load up properties -->
    <context:component-scan base-package="com.test"/>
    <context:property-placeholder location="file:///C:/dev/workspace/test-project/src/main/resources/appconfig.properties"/>
</beans>

TestConfig.java

@Component
public class TestConfig
{

    @Value("${test.key1}")
    private String key1;

    public String getKey1()
    {
        return key1;
    }

}

的src /主/资源/ appconfig.properties

test.key1=value
test.key2=value

启动我的tomcat,我在日志中看到以下内容:

00:11:41,985 [localhost-startStop-1]  INFO PropertyPlaceholderConfigurer - Loading properties file from URL [file:/C:/dev/workspace/test-project/src/main/resources/appconfig.properties]

但是,当我执行getKey1()时,我得到“null”。

我错过了什么?

问题2:如果我使用“classpath”:

<context:property-placeholder location="classpath:appconfig.properties"/>

指的是哪个目录? WEB-INF / classes的根?

2 个答案:

答案 0 :(得分:0)

我希望你像Eclipse一样使用IDE。

  • 检查资源目录是否已添加到类路径中,并且它还包含其中的所有文件,如果是eclipse,则必须在包含模式中添加

    < / LI>
  • 构建项目并检查属性文件是否在WEB-INF/classes

  • 中可用

回答你的第二个问题

classpath:appconfig.properties - 是春天将在WEB-INF/classes

中查找该文件

答案 1 :(得分:0)

这太傻了......

当我得到TestConfig对象时,我正在做:

TestConfig config = new TestConfig();
config.getKey1();

当然,配置对象是一个全新的对象,并且从未实例化(或注入)任何东西。

相反,我正在注入它,所以它被Spring框架初始化:

@Autowired
private TestConfig config;