场景介绍
使用spring往一个bean(BeanB)注入另一个bean(BeanA),发现BeanA为null,注入失败了。
可能存在的原因:
(1)该类没有托管给spring 管理
一般在类的上面添加@Component
(2)你的这个类有被new出来的实例的,new 过的对象不会交给Spring容器管理 所以里面的 service或者dao注入不进来。一般是指引用某些框架,你是继承某个接口,但是这些框架默认new过这个方法,比如MVC拦截的HandlerInterceptor类。
如果要new的这个类里有想用@autowired 自动注入的内容,则最好不好去new这个类,否则自动注入无效,为null;
解决办法:要用这个类的时候,这个类也用@autowired 自动注入
(3)使用时用以下方式
/**
* 由于不能用@Autowired进行注入,则使用这种手动注入方式
*/
private RedisUtils redisUtils = BeanUtil.getBean(RedisUtils.class);
这样就要正常引用redisUtils ,这样手动出来的跟@Autowire 一样的。