我之前已经在其他一些项目中这方面的工作,我只是重新做同样的事情,但由于某种原因,它不工作。 春季@Value
不是从属性文件读取,而是它的字面意思,取值为
AppConfig.java
@Component
public class AppConfig
{
@Value("${key.value1}")
private String value;
public String getValue()
{
return value;
}
}
applicationContext.xml中:
<context:component-scan
base-package="com.test.config" />
<context:annotation-config />
<bean id="appConfigProperties"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:appconfig.properties" />
</bean>
appconfig.properties
key.value1=test value 1
在我的控制器,在那里我有:
@Autowired
private AppConfig appConfig;
该应用程序启动就好了,但是当我做
appConfig.getValue()
它返回
${key.value1}
它不能解决的属性文件中的值。
思考?
我也找到了原因@value
是不工作的, @value
需要PropertySourcesPlaceholderConfigurer
,而不是一个PropertyPlaceholderConfigurer
。 我也做了同样的变化和它的工作对我来说,我使用弹簧4.0.3版本。 我这个配置使用下面的代码在我的配置文件 -
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
问题是由于问题,我的applicationContext.xml VS弹簧servlet.xml中 - 这是豆子之间划定范围的问题。
pedjaradenkovic好心向我指出现有的资源: 在@Controller类春季@Value标注不评估价值里面的属性文件和春天3.0.5不评估从性能@Value注释
在我来说,我是缺少大括号。 我有@Value("foo.bar") String value
,而不是正确的形式@Value("${foo.bar}") String value
对小枝引导用户都PropertyPlaceholderConfigurer和新PropertySourcesPlaceholderConfigurer在Spring 3.1中添加。 所以它的简单访问属性文件。 刚刚注入
注意:请确保您的财产不能是Static
@Value("${key.value1}")
private String value;
我用的是春天启动,并为我升级从版本1.4.0.RELEASE
到1.5.6.RELEASE
解决了这个问题。
有pedjaradenkovic的评论的读。
继他提供了一个链接,这是不工作的原因是@Value
处理需要PropertySourcesPlaceholderConfigurer
,而不是一个PropertyPlaceholderConfigurer
。