所以,我有一个包含以下条目的简单属性文件:
my.value=123
another.value=hello world
正在使用 PropertyPlaceHolderConfigurer
加载此属性文件,该文件引用了上面的属性文件。
我有以下类,我正在尝试将这些属性加载到这样的类中:
public class Config
{
@Value("${my.value}")
private String mValue;
@Value("${another.value}")
private String mAnotherValue;
// More below...
}
问题在于,mValue
和 mAnotherValue
始终为 null...但在我的 Controller 中,加载的值很好。什么给了?
最佳答案
如果 Config
的实例是通过 new
手动实例化的,那么 Spring 不会参与其中,因此注释将被忽略。
如果您无法更改代码以使 Spring 实例化 bean(可能使用 prototype
-scoped bean),那么另一种选择是使用 Spring 的加载时类加载器编织功能(参见docs)。这是一些低级 AOP,它允许您像往常一样实例化对象,但 Spring 将通过应用程序上下文传递它们以使它们连接、配置、初始化等。
不过,它并不适用于所有平台,因此请阅读上面的文档链接,看看它是否适合您。
关于java - Spring @Value 注释总是评估为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4130486/