当前位置: 首页 > 面试题库 >

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

骆文华
2023-03-14
问题内容

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

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


问题答案:

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

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

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



 类似资料:
  • 我有一个 Spring 注释类 ,其布尔字段为: 这个类被导入到另一个Spring注释类中,如下所示: 在测试用例中通过Spring上下文实例化类时,容器无法将字符串解析为布尔字段<code>mappingsEnabled</code>,我得到: 关于我错过了什么的任何线索?

  • 问题内容: 尝试在Spring 3.0.5.RELEASE中自动将属性连接到Bean ,我正在使用: config.properties: main-components.xml: MyClass: 结果,username被设置为字面值 ,因此表达式不会被解析。我对该类的其他自动关联依赖关系已设置,并且Spring不会引发任何异常。我也尝试添加,但没有帮助。 如果我将属性解析为单独的bean,然后

  • 我试图用Spring框架构建一个控制台应用程序。 我有一个由注释的类: 和由注释的类 但是,当我在中定义属性并使用默认配置文件时,属性将被分配。

  • 问题内容: 我是Spring的新手,尝试使用带注释的控制器内部的注释注入带有值的字符串,并且将字符串的值作为字符串而不是属性文件中的值进行评估。 下面是我要插入的字符串“ message”的控制器。 我的应用程序上下文如下所示: 我的属性文件包含以下行: Spring必须在某个时候获取该值,因为每当我更改为不在属性文件之类的值时,都会出现异常。 问题答案: 似乎已经有人问过这个问题,Spring

  • 问题内容: 我想使用文件中的值,以便在另一个类的方法中传递它。问题在于值总是返回。可能是什么问题呢?提前致谢。 问题答案: 您不能在静态变量上使用@Value。您必须将其标记为非静态,或者在此处查看将值注入静态变量的方法: https://www.mkyong.com/spring/spring-inject-a-value-into-static- variables/ 编辑:以防万一将来链接中

  • 有一个@Value注释的常量,在运行测试时不会初始化,当构造函数中需要它时,它会抛出NullPointerException。 要测试的示例类: 示例测试类: 事情尝试了,但没有任何效果: 我已经创建了应用程序。具有所需值的属性文件 创建应用程序测试。属性,并添加了TestPropertySource(locations=“classpath:application test.properties