Service class类里用@Inject,报空指针异常

在Service类中用Inject注解注入其他Service类,报空指针异常eae080a0a3e18f0c9f31d250d89577b.png

评论区

JFinal

2020-07-29 16:12

在 controller 中使用下面的方式注入 NoticeService 才可以:
public class MyController extends Controller {

@Inject
NoticeService noticeService;
...
}

也就是说,注入需要有一个起点,这个起点可以是 Controller、Interceptor,也可以是这些起点的下一层

检查一下你的 NoticeService 是 new 出来的,还是用 @Inject 注入的

如果不能在起点进行注入,还可以通过 Aop.get(NoticeService.class) 进行注入

jfinal爱好者22

2020-07-29 16:24

@JFinal 就是在controller里面,注入一下NoticeService就可以了是吧

JFinal

2020-07-29 16:38

@jfinal爱好者22 使用 @Inject 注入,必须有一个起点是被 jfinal 接管的,三个主要的起点:
1:Controller
2:Interceptor
3:Aop.get(...)

这个就跟 spring 中使用依赖注入的时候,对象的创建是被 spring 接管的是一个道理,不能自己 new 出对象, new 出对象,意味着没有被框架接管,没被接管就没有注入的机会

jfinal爱好者22

2020-07-29 17:09

@JFinal 明白了,谢谢

JFinal

2020-07-29 17:16

@jfinal爱好者22 忘了一个重要的配置:
configConstant(Constants me) {
me.setInjectDependency(true);
}

以上配置开启注入功能,如果希望对父类进行注入,还需要添加一行配置:
me.setInjectSuperClass(true);

jfinal爱好者22

2020-07-29 17:34

@JFinal 嗯嗯,好的

永字诀

2020-07-30 10:00

@jfinal爱好者22 这里有套视频课程,对JFinal核心知识点进行了系统介绍,包括AOP的应用,可以考虑下 https://ke.qq.com/course/2839073?tuin=92419b8c