广告
返回顶部
首页 > 资讯 > 精选 >怎么实现springboot相互依赖server相互引用
  • 935
分享到

怎么实现springboot相互依赖server相互引用

2023-06-29 07:06:09 935人浏览 泡泡鱼
摘要

小编给大家分享一下怎么实现SpringBoot相互依赖server相互引用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!springboot相互依赖 server

小编给大家分享一下怎么实现SpringBoot相互依赖server相互引用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

springboot相互依赖 server相互引用

public class RoleService{@Autowired @Lazyprivate UserServer userServer;}public class UserService{@Autowired @Lazyprivate RoleService roleService;}

spring解决相互依赖的问题

构造器循环依赖

@Servicepublic class A {      public A(B b) {  } }@Servicepublic class B {      public C (C c) {  }} @Servicepublic class C {      public A (A a) {  }}

通过构造器注入构成的循环依赖,此依赖是无法解决的,只能抛出BeanCurrentlyInCreationException异常表示循环依赖

描述:创建A类是,构造器需要B类,那将去创建B,在创建B时又发现需要A类,则又去创建C类,最终在创建C时发现又需要A,从而形成一个环,没办法创建。

原理:Spring容器将每一个正在创建的bean标识符放在一个“当前创建bean池”中,bean标识符创建过程中将一直保持在这个池中,因为如果在创建bean过程中发现自己已经在“当前创建bean池”中时,将会抛出BeanCurrentlyInCreationException异常表示循环依赖;而对于创建完毕的bean将从“当前创建bean池”中清除掉。

setter循环依赖

@Servicepublic class A1 {      @Autowired      private B1 b1; } @Servicepublic class B1 {      @Autowired      public C1 c1;} @Servicepublic class C1 {      @Autowired public A1 a1; }

通过setter注入方式构成的循环依赖。

原理:对于setter注入造成的依赖是通过Spring容器提前暴露刚完成构造器注入但未完成其他步骤(比如setter注入)的bean来完成的,而且只能解决单例作用域的bean循环依赖。

field属性注入循环依赖(prototype)

@Service @Scope("prototype") public class A1 {       @Autowired       private B1 b1; }  @Service @Scope("prototype") public class B1 {       @Autowired       public C1 c1; }  @Service @Scope("prototype") public class C1 {       @Autowired  public A1 a1; }

报错

怎么实现springboot相互依赖server相互引用

小结一下

Spring只能解决Setter方法注入的单例bean之间的循环依赖

ClassA依赖ClassB,ClassB又依赖ClassA,形成依赖闭环。Spring在获取ClassA的实例时,不等ClassA完成创建就将其曝光加入正在创建的bean缓存中。在解析ClassA的属性时,又发现依赖于ClassB,再次去获取

ClassB,当解析ClassB的属性时,又发现需要ClassA的属性,但此时的ClassA已经被提前曝光加入了正在创建的bean的缓存中,则无需创建新的的ClassA的实例,直接从缓存中获取即可。从而解决循环依赖问题。

以上是“怎么实现springboot相互依赖server相互引用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 怎么实现springboot相互依赖server相互引用

本文链接: https://www.lsjlt.com/news/323534.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么实现springboot相互依赖server相互引用
    小编给大家分享一下怎么实现springboot相互依赖server相互引用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!springboot相互依赖 server...
    99+
    2023-06-29
  • springboot相互依赖server相互引用方式
    目录springboot相互依赖server相互引用spring解决相互依赖的问题构造器循环依赖setter循环依赖field属性注入循环依赖(prototype)小结一下sprin...
    99+
    2022-11-13
  • springboot的相互依赖报错问题怎么解决
    本篇内容介绍了“springboot的相互依赖报错问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!springboot相互依赖报错...
    99+
    2023-06-29
  • spring怎么解决相互依赖问题
    在Spring中,可以通过以下几种方式解决相互依赖问题:1. 构造函数注入:使用构造函数将依赖项作为参数传递给类的构造函数,从而实现...
    99+
    2023-08-16
    spring
  • java调用相互依赖的dll的处理方法是什么
    这篇文章将为大家详细讲解有关java调用相互依赖的dll的处理方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、问题描述最近在做一个功能时遇到java需要调用dll,并且dll有依...
    99+
    2023-06-29
  • 怎么实现C#与Lua相互调用
    这篇文章主要介绍“怎么实现C#与Lua相互调用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么实现C#与Lua相互调用”文章能帮助大家解决问题。一、编译Lua动态链接库1. 编译Windows下使...
    99+
    2023-06-30
  • 如何实现springboot中controller之间的相互调用
    springboot controller之间相互调用 SpringBoot之间内部调用 @Autowired private RestTemplate restTemplat...
    99+
    2022-11-12
  • Canvas与Image怎么实现互相转换
    这篇文章将为大家详细讲解有关Canvas与Image怎么实现互相转换,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。转换 Image为 Canvas 要把图片...
    99+
    2022-10-19
  • ESM与CJS互相转换怎么实现
    本篇内容介绍了“ESM与CJS互相转换怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!正文ESM 和 CJS 是我们常用的模块格式,两...
    99+
    2023-07-05
  • java中JSONArray互相转换List怎么实现
    这篇文章主要讲解了“java中JSONArray互相转换List怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java中JSONArray互相转换List怎么实现”吧!1:JSONA...
    99+
    2023-07-02
  • C#怎么实现Array,List,Dictionary相互转换
    这篇文章主要介绍“C#怎么实现Array,List,Dictionary相互转换”,在日常操作中,相信很多人在C#怎么实现Array,List,Dictionary相互转换问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-30
  • Naive与WebView在Android中怎么实现互相调用
    本篇文章为大家展示了Naive与WebView在Android中怎么实现互相调用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android  Naive与WebView的互相调用详解An...
    99+
    2023-05-31
    android naive webview
  • android中怎么实现String与InputStream相互转换
    android中怎么实现String与InputStream相互转换,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一:纯手戳代码:String to InputStreamSt...
    99+
    2023-06-02
  • Java中string与int怎么实现互相转换
    本篇文章为大家展示了Java中string与int怎么实现互相转换,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。int -> String int i=12345;String s="...
    99+
    2023-05-31
    java string int
  • Java怎么实现Unicode和中文相互转换
    在Java中,可以使用java.nio.charset.StandardCharsets类和java.lang.String类来实现...
    99+
    2023-10-18
    Java
  • go中string、int、float相互转换怎么实现
    小编给大家分享一下go中string、int、float相互转换怎么实现,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!string转其它string --> int:将字符串13转换为int类型的数值13str&nb...
    99+
    2023-06-29
  • C语言栈与队列怎么相互实现
    本篇内容介绍了“C语言栈与队列怎么相互实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、本章重点用两个队列实现栈用两个栈实现队列解题思路...
    99+
    2023-06-29
  • Linux中怎么实现makefile 和shell文件相互调用
    Linux中怎么实现makefile 和shell文件相互调用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。shell 文件内调用makefile文件:#!/bin/bashc...
    99+
    2023-06-09
  • C#怎么实现Word和ODT文档相互转换
    本篇内容介绍了“C#怎么实现Word和ODT文档相互转换”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ODT文档格式一种开放文档格式(Ope...
    99+
    2023-06-30
  • C#怎么实现实体类和XML的相互转换
    这篇文章主要为大家展示了“C#怎么实现实体类和XML的相互转换”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#怎么实现实体类和XML的相互转换”这篇文章吧。一、实体类转换成XML将实体类转换成...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作