关于Spring中,注入的bean为null的情况
2018-08-13 13:01
281 查看
描述问题
在写项目的时候,写了一个工具类或者测试类,然后调用相关的service层或者dao层的bean,但是通通为null,为啥呢?
问题原因
两种情况会导致如此问题,一个是工具类中的方法为静态方法,静态方法调用了bean,但是由于spring的加载机制,是加载静态代码-》构造函数-》注入bean-》postconstuct的顺序执行,因此静态方法里调用的bean,并没有注入相应的bean,因此为空,所以会出现bean为null的情况。
另一种情况是,调用工具类的时候,new了一个工具类的实例,该应用里的实例都是交给spring IOC容器去看管维护的,现在突然new出来一个实例,spring IOC容器是没有去看管他的,所以并不在同一个上下文中,那么new出来的这个类里面的实例方法,当然也调用不到spring IOC上下文里的实例了,所以当你调用你new出来的实例的方法时候,该方法里调用的spring的bean,都是没有注入的对象的。
解决办法
解决办法同样有两种,针对上面说的第一个问题的解决办法是,使用注解@postconstruct的方法,手动注入bean,因为postconstruct的方法,在bean加载完成之后,init之前执行,所以在这个时间点,注入相应的bean对象,就会生效。
第二种方法是,直接把该工具类作为spring的一个bean组件,使用@component,在业务层调用的时候,也同样使用注入的方式注入该工具类,这样也可以解决问题了。
相关文章推荐
- 关于spring依赖注入到普通类中为null的情况解决理解方案
- struts2与spring集成时,关于Action类中成员bean自动注入的问题
- 基于Spring+SpringMVC+Hibernate框架系统, 利用SpringAOP实现写日志,切入点的Controller层出现@AutoWire 注入Service为null的情况分析
- 关于spring boot自动注入Consider defining a bean of type 'X' in your configuration
- struts2与spring集成时,关于class属性及成员bean自动注入的问题
- struts2与spring集成时,关于Action类中成员bean自动注入的问题
- Spring 关于bean的获取以及自定义注解的起始注入和获取
- 关于Jersey整合Spring注入出现NullPointException问题
- Spring在Java Filter注入Bean为Null的问题解决
- 关于SpringBoot获取IOC容器中注入的Bean(推荐)
- 关于资源文件中的字段是如何注入到spring bean中的
- 关于spring boot自动注入出现Consider defining a bean of type 'xxx' in your configuration问题解决方案
- struts2与spring集成时,关于class属性及成员bean自动注入的问题
- 关于spring boot无法自动注入bean问题解决方案
- struts2与spring集成时,关于class属性及成员bean自动注入的问题
- struts2与spring集成时,关于Action类中成员bean自动注入的问题
- SPRING中BEAN注入成功,可是启动WEB服务器,调用方法时,BEAN全是空,NullpointerException
- springcloud feign 注入bean null问题
- 关于TestNG无法采用Spring注入bean的问题解决
- 1.spring:helloword/注入/CDATA使用/其他Bean/null&级联/p命名空间