@Autowire注入了bean(A)在当前类,但其他类需要调用这个A,报null异常,使用get获取bean为解决方案
问题背景
在做项目时,我在一个类中自动注入了A,另一个想通过当前类调用这个A,却出现null,感觉讲不清楚,我还是写一下错误示例
1 bean:B自动注入bean:A
@Service
public class B{
@Autowired
public A a;
}
2 想在另一个类C中调用A,但我注入的是bean:B
@Service
public class C{
@Autowired
B b;
public void getA(){
if( b.a != null ){
System.out.println("success");
}
}
}
3 但是这个结果是a为空,并没有被调用过来,查阅了一些资料
- 在普通Java类中使用service或者dao就会报空指针异常,因为这个普通类不在Spring的管理下,所以不能使用Spring来注入
- 虽然现在不是普通类,b确实已经注入到C里面了,但a是注入在b中,由spring管理,a不属于b的属性,使用并不能直接被调用
解决方案
1 使用get方式去直接取a这个对象来使用,不通过spring获取
@Service
public class B{
@Autowired
A a;
public A getA(){
return a;
}
}
@Service
public class C{
@Autowired
B b;
public void getA(){
A a = b.getA();
if( a != null ){
System.out.println("success");
}
}
}
2 这个是时候就获取成功了,打印success
心得
项目中做着做着就会遇见莫名其妙的问题,说到底还是对源码不太熟悉,ahahah
- 在普通Java类中使用service或者dao就会报空指针异常,因为这个普通类不在Spring的管理下,所以不能使用Spring来注入
- 虽然现在不是普通类,b确实已经注入到C里面了,但a是注入在b中,由spring管理,a不属于b的属性,使用并不能直接被调用
作为程序员第 88 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …
Lyric: 远远抛开一切
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/110787.html