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

导读:本篇文章讲解 @Autowire注入了bean(A)在当前类,但其他类需要调用这个A,报null异常,使用get获取bean为解决方案,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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

Lyric: 远远抛开一切

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/110787.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!