`

Spring注入静态变量

 
阅读更多

       本文写了一个例子,用来实现Spring注入静态变量。静态变量无法直接注入的原因,是static变量的初始化在类加载器加载的时候进行,它早于Web引擎启动的时间。一种解决方案是在执行期通过变量注入的形式进行注入。

 

package com.my.util;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import com.my.dao.ICacheService;

/**
 * Cache工具类
 * @author aeolus
 *
 */
@Component
public class CacheUtil {
	//需要被注入的静态变量
	private static ICacheService SERVICE;
	
	/**
	 * 这种方法可以设置静态变量,类似于依赖注入
	 * @param cacheService
	 */
	@Resource(name = "cacheService")
	private void setCacheService(ICacheService cacheService) {
		CacheUtil.SERVICE = cacheService;
	}

	public static  void setValue(String key,Object value){
		SERVICE.setValue(key, value);
	}
	
	public static Object getValue(String key) {
		return SERVICE.getObject(key);
	}

}

 

分享到:
评论

相关推荐

    Spring不能注入Static变量的原因及Spring注入静态变量

    然而,Spring并不支持直接注入静态变量,这主要是由于静态变量的特性与依赖注入的设计原则相冲突。 首先,让我们了解一下为什么Spring依赖注入通常不适用于静态变量。静态变量属于类级别,而不是对象级别,这意味着...

    spring 如何将配置信息注入静态变量的方法

    本篇文章主要介绍了spring 如何将配置信息注入静态变量的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    static静态变量使用@Value注入方式.md

    通过上述分析和示例,我们可以看到,在Spring框架中,虽然不能直接使用`@Value`注解为静态变量注入值,但可以通过定义一个非静态方法并使用`@Value`注解来间接实现这一目标。这种方法不仅避免了潜在的警告和错误,还...

    spring boot静态变量注入配置文件详解

    要解决静态变量注入问题,我们可以使用 Spring 的 set 注入方法,通过非静态的 setter 方法注入静态变量。例如,我们可以将 KafkaConfig 类修改为: ```java @Component(value = "KafkaConfig") @...

    springboot 使用yml配置文件给静态变量赋值教程

    为了解决这个问题,我们可以创建带有`@Value`注解的非静态setter方法,用于在Spring容器初始化时设置静态变量的值。首先,确保`ClickHouseUtil`类有`@Component`注解,这样Spring容器会自动管理这个类并调用setter...

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

    Spring Boot工具类静态属性注入是指使用Spring Boot框架时,如何将配置信息注入到工具类的静态变量中,以便在程序中使用这些配置信息。这种方式可以方便地在不同的环境中切换配置信息,例如在开发环境中使用本地的...

    Spring Boot使用Value注解给静态变量赋值的方法

    在 Spring Boot 框架中,我们经常需要将配置文件中的值注入到静态变量中,但是默认情况下,Spring Boot 不支持将值注入到静态变量中。这是因为静态变量是属于类的,而不是实例的,而 Spring Boot 的注入机制是基于...

    springboot无法从静态上下文中引用非静态变量的解决方法

    解决办法是使用spring的set注入方法来将非静态变量注入静态变量。下面是一个示例代码: ```java @PropertySource(value = {"classpath:config/application.yml"}, ignoreResourceNotFound = true, encoding="UTF-8...

    spring static静态方法里面注入bean空指针解决

    然而,静态方法和静态变量不参与Spring的生命周期管理,因此,尝试在静态字段或静态方法中直接使用`@Autowired`注入Bean会导致空指针异常,因为Spring容器不会初始化静态成员。 **解决方法1:使用@Component和非...

    spring项目启动加载类到静态服务类中的三种方式.zip

    例如,我们可以在`@PostConstruct`方法或者`run`方法中获取bean并赋值给静态变量。 ```java @Component public class InitializationBean { @Autowired private MyBean myBean; @PostConstruct public ...

    Spring选择题(含答案).doc

    静态方法:静态方法不能用于依赖注入,因为静态方法不能访问非静态成员变量。 4. 在 Spring 中,applicationContext.xml 文件可以配置 Bean 的作用域,例如,prototype 作用域表示每次请求 Bean 时都会创建新的...

    知识共享-spring属性注入(雷惊风).

    该工厂Bean用于获取类的静态变量,并将其注入到其他Bean的属性中。例如,在`CarBrandType`接口中定义了两个常量`HONG_QI`和`JI_LI`,然后通过配置`FieldRetrievingFactoryBean`来获取这些常量,并将其注入到`Car`类...

    从零开始学Spring Boot

    1.19 Spring Boot使用Druid(编程注入) 1.20 Spring Boot普通类调用bean 1.21 使用模板(thymeleaf-freemarker) 1.22 Spring Boot 添加JSP支持 1.23 Spring Boot Servlet 1.24 Spring Boot过滤器、监听器 1.25 ...

    多线程Autowire注入null的解决方案.docx

    在帮助类中,我们还需要实现setApplicationContext方法,以便在容器启动时将ApplicationContext注入到静态变量中。 使用这种方法,我们可以在多线程中正确地注入service,并避免了null的问题。 知识点总结: 1. ...

    Java EE 框架整合 开发入门到实战-Spring+Spring MVC+MyBatis微课版复习笔记

    - 依赖注入是IoC的一种表现形式,它从调用者的角度来说,由Spring容器负责将依赖对象赋值给调用者的成员变量,因此依赖注入是Spring框架中实现控制反转的机制。 Spring框架采用的依赖注入机制: - Spring框架使用...

    Java反射机制修改私有成员变量的实现_Reflection

    在实际应用中,反射机制常用于框架开发、插件系统、测试工具等场景,例如Spring框架中的依赖注入就大量使用了反射。但是,反射的使用也需要注意性能问题,因为反射操作相比直接的Java代码执行会慢很多,且过度使用...

    Spring学习思维导图

    注入是指将对象的成员变量赋值的过程。Spring中有多种注入方式,如set注入、构造注入、数组注入、集合注入等。set注入是指通过类的set方法来赋值,构造注入是指通过类的有参构造方法来赋值。 五、控制反转和依赖...

    spring annotation注解

    * @Autowired 注解不能用于静态成员变量。 5. 结论 使用 Spring 注解可以简化属性的注入过程,提高代码的可读性和维护性。在使用 @Autowired 注解时,需要注意其使用限制和注意事项,以确保正确使用。

Global site tag (gtag.js) - Google Analytics