网站链接: 我爱捣鼓
当前位置: 首页 > web开发 > JAVA

springboot中@Value注解为什么是null?

2022/11/17 21:55:32

问题描述 springboot中使用@value注解之后,字段值总是为空。后来发现是因为字段使用了static修饰。java代码如下:@Componentpublic class TestValue { @Value("${appEnv}") private static String appenv; //null public String test() { …

  • 问题描述

        springboot中使用@value注解之后,字段值总是为空。后来发现是因为字段使用了static修饰。java代码如下:

@Component
public class TestValue {
    @Value("${appEnv}")
    private static String appenv; //null
    public String test() {
        return appenv;
    }
}
  • 问题原因

        spring的依赖注入不支持为static变量注入。spring 依赖注入的底层原理还是利用反射来创建对象。而static变量,在jvm加载类的时候便已经创建,存在于方法区,被所有实例共享,属于类的属性而不是对象的属性。spring是基于对象层面的依赖注入。

  • 解决方法

        使用set方法注入,非静态setter 方法注入静态变量。如:

import org.springframework.beans.factory.annotation.Value;  
import org.springframework.stereotype.Component;  
  
@Component  
public class GlobalValue {  
  
    public static String DATABASE;  
  
    @Value("${mongodb.db}")  
    public void setDatabase(String db) {  
        DATABASE = db;  
    }  
  
}

        通过以上内容我们知道了springboot中@Value注解为null的解决办法。感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!

相关资讯

  • springboot项目设置session生命周期时间的几种方法?

    java开发的springboot项目设置session生命周期时间的方法有三种,今天我们就来说说这三种方法。一丶修改Tomcat配置web.xml文件 在Tomcat服务器对应conf配置文件夹下的web.xml文件中修改<session-time-out></session-time-out>中的值. Tomcat默…

    2022/11/12 12:35:20
  • 图文教程一步一步教你在​idea中使用svn如何创建分支?

    我们在用idea开发java项目时需要通过svn创建项目分支,这样更高效率的开发新的项目,今天我们就通过图文教程一步一步教你idea中如何创建分支?第一步第二步第三步 通过以上内容我们知道了在idea中使用svn如何创建分支。感谢您访问“我爱捣鼓(www.woaidaogu.com)”…

    2022/11/12 12:23:28
  • java函数中如何返回多个值?

    我们一般在写java函数时只会返回一个值,但有时我们需要在函数中返回多个值应该怎么办呢?使用数组 数组可用于返回基本数据类型和引用数据类型。 例如,下面的getCoordinates方法返回double数组:double[] getCoordinatesDoubleArray() { double[] coordi…

    2022/11/8 22:08:01