@Autowire注入了bean(A)在当前类,但其他类需要调用这个A,报null异常,使用get获取bean为解决方案

@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: 远远抛开一切

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值