我是Spring新手,我想知道在Spring中使用@Value注释的先决条件/条件是什么?
我现在拥有的是一个Token类,它将硬编码的密钥作为字段。我试图做的是将此密钥移动到配置文件以消除硬编码,但由于某种原因,以下操作无效。
public class Token {
//...some code
@Value("${my.secretKey}")
private String key;
//...some code
}
也许有任何标准技术可以解决这类任务 感谢帮助!
P.S。我有.properties
个文件,其中包含my.secretKey=123
条目。
答案 0 :(得分:6)
注入依赖项和值仅适用于由Spring管理的对象 - 当您使用new
手动创建对象时,例如通过执行new Token()
,然后Spring无法处理对象以注入依赖项和值。
Token
对象必须是一个Spring bean才能工作。
答案 1 :(得分:2)
要使用@Value
注释,您的Spring版本必须为3.0+
您必须在XML或注释中注册静态PropertySourcesPlaceholderConfigurer
bean,以便Spring @Value
知道如何解释${}
了解更多信息
答案 2 :(得分:0)
一个错误也可能是.properties
文件的正确位置。您的.properties
文件位置非常重要。您的xyz.properties
文件必须放在项目的src
文件夹中,例如:src/xyz.properties
之后,
将属性文件加载到XML配置文件中:
档案:applicationContext.xml
添加以下行:
<context:property-placeholder location="classpath:xyz.properties"/>
此代码应出现在xml配置文件中的<context:component-scan .../>
行之后。
现在
将属性值注入您的Token
类中,现在应该可以使用了。
编码愉快。