我以前在其他项目中做过这个,我只是重新做同样的事情,但由于某种原因它不起作用。 Spring @Value
不是从属性文件中读取,而是从字面上获取值
AppConfig.java
@Component
public class AppConfig
{
@Value("${key.value1}")
private String value;
public String getValue()
{
return value;
}
}
应用上下文.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}
它不会解析为属性文件中的值。
想法?
原文由 TS- 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题是由于我的 applicationContext.xml 与 spring-servlet.xml 中的问题 - 这是 bean 之间的范围问题。
pedjaradenkovic 好心地向我指出了一个现有资源: Spring @Value annotation in @Controller class not evaluating to value inside properties file and Spring 3.0.5 doesn’t evaluate @Value annotation from properties