zoukankan      html  css  js  c++  java
  • 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;
    sequenceimpl.sequenceClient = this.sequenceClient;
    }

    原理:

    1.将需要调用Spring的Service层的类通过@Component注解为组件加载;
    2.同样通过@Autowired获取Service层的Bean对象;
    3.为类声明一个静态变量,方便下一步存储bean对象;
    4.通过注解@PostConstruct ,在初始化的时候初始化静态对象和它的静态成员变量sequenceClient,原理是拿到service层bean对象,静态存储下来,防止被释放。

  • 相关阅读:
    Linux下MySQL主从同步配置
    Tortoisegit图文使用教程
    C语言I博客作业06
    第十周助教总结
    C语言I博客作业04
    C语言I博客作业02
    第十一周助教总结
    第十二周助教总结
    第九周助教总结
    C语言I博客作业02
  • 原文地址:https://www.cnblogs.com/wxywxy/p/10741142.html
Copyright © 2011-2022 走看看