2021解决SpringBoot中非Controller类调用service方法为null空指针,报错NullPointerException的解决
目录
问题描述
在springboot项目中,非controller层的类调用service层中的方法(普通类调用service层中的接口实现数据库操作)时,报java.lang.NullPointerException这个错误。
原因
service无法导入到非controller层中去。
当前配置环境
SpringBoot V2.4.2
Druid V1.1.17
Mybatis-plus V3.4.2
解决办法
步骤
- 该类使用@Component注解
- 添加一个本类类型的公有静态字段 (其他教程就是因为设为私有导致无效)
- 创建一个初始化方法,贴上@PostConstruct 标签,用于注入bean
- 创建方法调用mapper或service接口
- 最后直接在普通类中调用即可(通过本类型调用)
代码
@Component //重点
public class TestServerse{
@Autowired
//正常引用目标service
private OtherService otherService ;
//将自己作为静态变量引入,使SpringBoot初始化之前就被创建
public static TestServerse testServerse; //public极为重要
/**
* 重新构造一个方法
* 通过 @PreDestroy 或 @PostContruct 实现初始化和销毁bean之前进行的操作
* @PostContruct 这个注解就是在springboot启动前就加载
*/
@PostConstruct
public void init() {
testServerse = this;
testServerse.otherService = this.otherService ;
// 初使化时将已静态化的otherService实例化
}
//测试调用
public void test(){
//调用时需要用testServerse.otherService的方式使用目标otherservice中的addXX方法
testServerse.otherService.addXX(xx);
}
结束
主要问题
解决代码很多,能用的很少。
实际使用确实需要根据自己不同的问题来具体解决。
我的博客
版权声明:本文为niaoyi0357原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。