spring不能注入静态变量的原因】的更多相关文章

静态方法是属于类(class)的,普通方法才是属于实体对象(也就是New出来的对象)的,spring注入是在容器中实例化对象,所以不能使用静态方法. @Autowired private static YourClass yourClass;   可以试一下,yourClass在这种状态下不能够被依赖注入,会抛出运行时异常java.lang.NullPointerException,为什么呢?静态变量/类变量不是对象的属性,而是一个类的属性,spring则是基于对象层面上的依赖注入. 而使用静态…
1.如果使用@Resource注解来注入静态变量的,服务器启动就会报错的.可以新增一个set方法,同时在set方法上用@Resource注解来注入. 2.或者直接在Spring的配置文件中使用<bean />标签来明确声明. 3.1案例如下: private static WebServiceContext webServiceContext; @Resource public void setWebServiceContext(WebServiceContext webServiceCont…
SpringBoot使用@Value从yml文件取值为空--注入静态变量     1.application.yml中配置内容如下:   pcacmgr:   publicCertFilePath: E:\\pcacmgr\\CerFiles\\xh_public.cer   encPublicCertFilePath: E:\\pcacmgr\\CerFiles\\hjzf_encPublic.cer   encPfxFilePath: E:\\pcacmgr\\CerFiles\\hjzf_…
Common.java是一个工具类. Spring无法直接给静态变量注入值,因为静态变量不属于对象,只属于类,也就是说在类被加载字节码的时候变量已经初始化了,也就是给该变量分配内存了,导致spring忽略静态变量.所以如下这种写法就是错误的,这样是无法注入的,在使用该变量的时候会导致空指针错误: @Autowired private static IOptionService optionService; Spring 依赖注入是依赖set方法,静态变量不属于对象,只属于类.解决方法就是加上非静…
情形1:静态变量为自动注入的对象 解决方案:设置两个变量,非静态变量使用@resource注入Bean,然后使用@PostConstruct在Spring初始化Bean成功后为静态变量赋值 @Component public class XXUtils { @Resource private XXXProperties xxxPropertiesAutowired; private static XXXProperties xxxProperties; @PostConstruct public…
spring注入静态对象属性时,因为虚拟机类加载问题,直接在属性上使用@Autowired 是不可以的.需要在属性对应的set方法上@Autowired,并且,set方法不能定义为static. 1.创建静态对象属性对应的类 package com.bluej.springj.service.impl; import org.springframework.stereotype.Service; import com.bluej.springj.service.LogService; @Serv…
原文: http://www.cnblogs.com/xing901022/p/4168124.html 今天碰到一个问题,我的一个工具类提供了几种静态方法,静态方法需要另外一个类的实例提供处理,因此就写出了这样的代码: 1 Class Util{ 2 private static XXX xxx; 3 xxx = BeanUtil.getBean("xxx"); 4 public static void method1(){ 5 xxx.func1(); 6 } 7 public s…
今天碰到一个问题,我的一个类提供了几种静态方法,静态方法需要另外一个类的实例提供处理,因此就写出了这样的代码: Class aa{ private static XXX xxx; xxx = BeanUtil.getBean("xxx"); public static void method1(){ xxx.func1(); } public static void method2(){ xxx.func2(); } } 这里是使用的getBean的方式,获得XXX的实例,但是别人说这…
今天碰到一个问题,我的一个工具类提供了几种静态方法,静态方法需要另外一个类的实例提供处理,因此就写出了这样的代码: Class Util{ private static XXX xxx; xxx = BeanUtil.getBean("xxx"); public static void method1(){ xxx.func1(); } public static void method2(){ xxx.func2(); } } 这里是使用的getBean的方式,获得XXX的实例,但是…
import java.util.Iterator; import java.util.LinkedList; import javax.annotation.PostConstruct; import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; im…