美文网首页
SpringBoot循环依赖解决

SpringBoot循环依赖解决

作者: 拾月初六 | 来源:发表于2019-08-07 17:55 被阅读0次

1.为什么会发生循环依赖

如果有两个类,类A依赖了类B,类B又依赖类A,那么在项目启动的时候,由于系统不知道先加载A还是B,就会出现循环依赖的错误。

2.解决方法

知道了发生的原因,我们就可以从下手解决了

2.1 不需要循环依赖

这个解决的思路是将两个类进行松耦合,我们常见的循环依赖多发生于多个业务类之间,由于业务需要,可能会发生方法互相调用的情况
这种方式,我们可以将公开的方法抽成接口,而方法的实现类里面值注入接口就可以,这样就不会发生循环依赖。
比如我有两个方法实现类UserServiceImpl和TeacherServiceImpl,UserServiceImpl类中有方法getUser会被TeacherServiceImpl调用,TeacherServiceImpl类中有方法getTeacher会被UserServiceImpl调用,此时我们把这getUser抽象成接口方法在UserService,getTeacher抽象成接口方法在TeacherService,那么在UserServiceImpl此时注入的是TeacherService,在TeacherServiceImpl注入的是UserService,就完全不会有影响。

2.2 说明加载顺序

那么如果有时候,特殊的情况确认发生了两个类之间互相注入,那么我们可以通过注解说明加载的顺训,告诉系统先加载哪个,
在上面的情况中,如果UserServiceImpl注入了TeacherServiceImpl,TeacherServiceImpl注入了UserServiceImpl,只需要在其中一个注入的@Autowired后面加一个@Lazy就可以。

相关文章

  • SpringBoot循环依赖解决

    1.为什么会发生循环依赖 如果有两个类,类A依赖了类B,类B又依赖类A,那么在项目启动的时候,由于系统不知道先加载...

  • Spring 是如何解决循环依赖的?

    Spring 是如何解决循环依赖的? 循环依赖: Spring 循环依赖有三种情况: 构造器的循环依赖,这种依赖 ...

  • springboot禁止循环依赖

    良好的工程设计的组件依赖关系一定是单向的,如果有循环的依赖关系,组件间的生命周期都是不明确的。在golang中直接...

  • Spring循环依赖解析

    一、前置问题 Bean创建流程? 什么是循环依赖? 三级缓存可以解决哪些循环依赖场景? 二级缓存可以解决循环依赖吗...

  • Spring是怎么解决循环依赖的?

    Spring是怎么解决循环依赖的?首先,Spring 解决循环依赖有两个前提条件: 不全是构造器方式的循环依赖必须...

  • 一文详解Spring中的循环依赖,面试必杀技

    目录 前言 什么是循环依赖? 什么情况下循环依赖可以被处理? Spring是如何解决的循环依赖? 简单的循环依赖(...

  • maven 如何解决依赖循环?(依赖排除)

    什么叫循环依赖?如何解决循环依赖?依赖排除细节实际项目总结 一. 什么叫循环依赖? 项目A依赖项目B的同时,项目B...

  • SpringBoot2.6.x默认禁用循环依赖后的应对策略

    一、序言 SpringBoot 2.6.x不推荐使用循环依赖,这是一个好消息,SpringBoot从底层逐渐引导开...

  • Spring循环依赖问题

    什么是循环依赖 循环依赖就是两个对象之间存在相互依赖的关系; Spring是如何解决循环依赖的 Spring使用三...

  • Spring解决循环依赖

    Spring解决循环依赖 Spring通过三级缓存来解决循环依赖,一级缓存为单例池(singletonObject...

网友评论

      本文标题:SpringBoot循环依赖解决

      本文链接:https://www.haomeiwen.com/subject/apsadctx.html