SpringMvc通过@Value( ) 给静态变量注入值

spring 不允许/不支持把值注入到静态变量中,如:

@Value("${ES.CLUSTER_NAME}")
private static String CLUSTER_NAME;

在方法中获得的CLUSTER_NAME,会得到null

解决
好在spring支持set方法注入,我们可以利用非静态setter 方法注入静态变量。如:

private static String CLUSTER_NAME;

@Value("${ES.CLUSTER_NAME}")
public void setClusterName(String clusterName) {
CLUSTER_NAME = clusterName;
}

@Value必须修饰在方法上,且set方法不能有static

这样就能获得值了

原文地址:https://www.cnblogs.com/zhangs1986/p/8421673.html

时间: 2024-08-04 08:59:28

SpringMvc通过@Value( ) 给静态变量注入值的相关文章

Spring-如何给静态变量注入值

Spring无法直接给静态变量注入值,因为静态变量不属于对象,只属于类,也就是说在类被加载字节码的时候变量已经初始化了,也就是给该变量分配内存了,导致spring忽略静态变量.所以如下这种写法就是错误的,这样是无法注入的,在使用该变量的时候会导致空指针错误: @Autowired private static StudentMapper studentMapper; Spring 依赖注入是依赖set方法,静态变量不属于对象,只属于类.解决方法就是加上非静态的set方法,如下: private

spring 给静态变量注入值

一般在spring中,给static变量加上@Autowired注解的时候会报空指针异常错误. 解决: 1.通过xml配置文件配置 这个就不多说了. 2.通过注解 @Component public class StructUtil { private static AttendanceMapper attendanceMapper; @Autowired public void setAttendanceMapper(AttendanceMapper attendanceMapper) { S

Spring boot 工具类静态属性注入及多环境配置

由于需要访问MongoDB,但是本地开发环境不能直接连接MongoDB,需要通过SecureCRT使用127.0.0.2本地IP代理.但是程序部署到线上生产环境后,是可以直接访问MongoDB的,因此开发好程序后,总是要修改一下MongoDB服务器的IP才能提交代码,这样很是不方便. private static final String PUBCHAT_HOST = "127.0.0.2"; // private static final String PUBCHAT_HOST =

Android进程管理及静态变量垃圾回收

1.Android静态变量的生命周期 静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的时候分配内存的,并且存在于方法 区.当类被卸载的时候,静态变量被销毁. 在PC机的客户端程序中,一个类被加载和卸载,可简单的等同于jvm进程的启动和结束.那么在Android中 呢?用的Dalvik vm也是一样的.不过Android不太突出的进程概念,所以对静态变量的生命周期就会感觉模糊,这种模糊对于值类型是无所谓的,如果是静态的对象引用, 则与内存回收.内存泄漏这些问题有关,有必要加

JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量

转载请注明出处:http://blog.csdn.net/xyang81/article/details/42836783 在上一章中我们学习到了如何在本地代码中访问任意Java类中的静态方法和实例方法,本章我们也通过一个示例来学习Java中的实例变量和静态变量,在本地代码中如何来访问和修改.静态变量也称为类变量(属性),在所有实例对象中共享同一份数据,可以直接通过[类名.变量名]来访问.实例变量也称为成员变量(属性),每个实例都拥有一份实例变量数据的拷贝,它们之间修改后的数据互不影响.下面看一

局部静态变量

1 #pragma region 成员函数的局部静态变量应用 2 class CTestA 3 { 4 public: 5 CTestA(); 6 void ReturnCurrentTime(float currentFrame, float nextFrame); 7 }; 8 9 CTestA::CTestA(){} 10 11 void CTestA::ReturnCurrentTime(float currentFrame, float nextFrame) 12 { 13 stati

c++ 类的静态变量

类的静态变量作为类的一部分,但不由类的创建产生,类的销毁而消失.静态变量和全局变量一样,会在main函数结束后销毁. 类可以对静态变量的值进行改变 #pragma once class ctest { public: ctest(void); ~ctest(void); static bool btest; }; 运用场景1: 类中有一个线程,但是类已经销毁了,而线程(while循环等)没有退出,这是可以通过静态变量来控制线程.

静态变量的陷阱

我们都知道,静态变量用起来是挺方便的,可是一不小心那就say拜拜了.说一说我在项目中遇到的情况,测试了好多次,最后才发现原因.感动啊! private static String UserRootPath = "/sdcard/User/"+UserManager.username; private static String UserCache=UserRootPath+"/path"; 目的: 在一个类中,定义了上面两个静态变量,想要实现不同用户登录创建不同的文

[转]Android静态变量的生命周期

原文地址:https://my.oschina.net/jerikc/blog/137207 Android是用Java开发,其静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的时候分配内存的,并且存在于方法区.当类被卸载的时候,静态变量被销毁.在PC机的客户端程序中,一个类被加载和卸载,可简单的等同于jvm进程的启动和结束.那么在Android中呢?用的Dalvik vm也是一样的.不过Android不太突出的进程概念,所以对静态变量的生命周期就会感觉模糊,这种模糊对于值