SpringBoot在Impl类中调⽤其它service层失败解决办法
在AImpl.java⽂件中引⽤BImpl.java的⽅法,编译正常,运⾏到调⽤的地⽅,报空指针异常,跟踪到异常位置,发现service为空,也就是按照之前controller层通过@Autowired注⼊service层失效。
解决办法:
在AImpl.java类中添加标红代码:
@Component
public class AImpl {
@Autowired
protected SequenceClient sequenceClient;
private static SequenceImpl sequenceimpl;
@PostConstruct //通过@PostConstruct实现初始化bean之前进⾏的操作
public void init() {
sequenceimpl = this;
springboot原理pdf
sequenceimpl.sequenceClient = this.sequenceClient;
}
原理:
1.将需要调⽤Spring的Service层的类通过@Component注解为组件加载;
2.同样通过@Autowired获取Service层的Bean对象;
3.为类声明⼀个静态变量,⽅便下⼀步存储bean对象;
4.通过注解@PostConstruct ,在初始化的时候初始化静态对象和它的静态成员变量sequenceClient,原理是拿到service层bean对象,静态存储下来,防⽌被释放。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。