我正在尝试将属性文件(.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的根?
答案 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;