java - Spring @Value 注释总是评估为空?

标签 java spring spring-mvc

所以,我有一个包含以下条目的简单属性文件:

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...
}

问题在于,mValuemAnotherValue 始终为 null...但在我的 Controller 中,加载的值很好。什么给了?

最佳答案

如果 Config 的实例是通过 new 手动实例化的,那么 Spring 不会参与其中,因此注释将被忽略。

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

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

关于java - Spring @Value 注释总是评估为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4130486/

相关文章:

spring - Spring事务中发生死锁时调度程序停止

java - 将项目从 Windows 导出到 Debian 时出现 Mysql 错误

java - 无法使用 weblogic 在 Spring MVC 项目中设置 session 值

java - 如何通过 Jersey 休息客户端发布列表

spring - Tomcat 在 Spring MVC 应用程序上提供静态资源

java - 使用分隔符和值分割的字符串数组

java - Spring Boot 如何使用 HiddenHttpMethodFilter

java - 多对一(项目-类型关系): identifer was change from x to y

java - 选择哪个 Eclipse IDE 版本?

java - 如何在此 smali 代码中返回静态结果