一尘不染

Spring @Value注释始终评估为null?

spring

因此,我有一个简单的属性文件,其中包含以下条目:

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总是为空…但是在我的控制器中,该值正好被加载。是什么赋予了?


阅读 401

收藏
2020-04-20

共1个答案

一尘不染

如果Config通过手动实例化的实例new,则不会涉及Spring,因此注释将被忽略。

如果你无法更改代码以使Spring实例化bean(也许使用prototype-scoped bean),那么另一种选择是使用Spring的加载时类加载器编织功能(请参阅docs)。这是一些低级的AOP,它允许你像往常一样实例化对象,但是Spring会将它们传递到应用程序上下文中,以进行连接,配置,初始化等。

不过,它并非在所有平台上都适用,因此请阅读上面的文档链接以查看它是否对你有用。

2020-04-20