Spring @Value注释

时间:2016-09-13 11:10:51

标签: java spring spring-mvc

我是Spring新手,我想知道在Spring中使用@Value注释的先决条件/条件是什么?

我现在拥有的是一个Token类,它将硬编码的密钥作为字段。我试图做的是将此密钥移动到配置文件以消除硬编码,但由于某种原因,以下操作无效。

public class Token {
//...some code

    @Value("${my.secretKey}")
    private String key;

//...some code
}

也许有任何标准技术可以解决这类任务 感谢帮助!

P.S。我有.properties个文件,其中包含my.secretKey=123条目。

3 个答案:

答案 0 :(得分:6)

注入依赖项和值仅适用于由Spring管理的对象 - 当您使用new手动创建对象时,例如通过执行new Token(),然后Spring无法处理对象以注入依赖项和值。

Token对象必须是一个Spring bean才能工作。

答案 1 :(得分:2)

要使用@Value注释,您的Spring版本必须为3.0+

您必须在XML或注释中注册静态PropertySourcesPlaceholderConfigurer bean,以便Spring @Value知道如何解释${}

了解更多信息

https://www.mkyong.com/spring3/spring-value-default-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类中,现在应该可以使用了。
编码愉快。