广告
返回顶部
首页 > 资讯 > 后端开发 > Python >springboot相互依赖server相互引用方式
  • 383
分享到

springboot相互依赖server相互引用方式

2024-04-02 19:04:59 383人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录SpringBoot相互依赖server相互引用spring解决相互依赖的问题构造器循环依赖setter循环依赖field属性注入循环依赖(prototype)小结一下sprin

springboot相互依赖 server相互引用

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

spring解决相互依赖的问题

构造器循环依赖

@Service
public class A {      
public A(B b) {  }
 }
@Service
public class B {
      public C (C c) {  }
} 
@Service
public 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循环依赖

@Service
public class A1 {      
@Autowired      
private B1 b1; } 
@Service
public class B1 {      
@Autowired      
public C1 c1;
} 
@Service
public 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; }

报错

小结一下

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

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

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: springboot相互依赖server相互引用方式

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

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

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

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

下载Word文档
猜你喜欢
  • springboot相互依赖server相互引用方式
    目录springboot相互依赖server相互引用spring解决相互依赖的问题构造器循环依赖setter循环依赖field属性注入循环依赖(prototype)小结一下sprin...
    99+
    2022-11-13
  • 怎么实现springboot相互依赖server相互引用
    小编给大家分享一下怎么实现springboot相互依赖server相互引用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!springboot相互依赖 server...
    99+
    2023-06-29
  • springboot的相互依赖报错问题怎么解决
    本篇内容介绍了“springboot的相互依赖报错问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!springboot相互依赖报错...
    99+
    2023-06-29
  • springboot项目之相互依赖报错问题(基于idea)
    目录springboot相互依赖报错解决方法springboot项目处理循环依赖问题(circular reference)解决方法springboot相互依赖报错 昨天在辛劳的进行...
    99+
    2022-11-13
  • java调用相互依赖的dll的处理方法
    目录一、问题描述二、处理办法2.1 类定义2.2 调用三、结语一、问题描述 最近在做一个功能时遇到java需要调用dll,并且dll有依赖关系,之前都是单独调用一个,其实调用dll的...
    99+
    2022-11-13
  • java调用相互依赖的dll的处理方法是什么
    这篇文章将为大家详细讲解有关java调用相互依赖的dll的处理方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、问题描述最近在做一个功能时遇到java需要调用dll,并且dll有依...
    99+
    2023-06-29
  • springboot多个service互相调用的事务处理方式
    目录多个service互相调用的事务处理注解配置如下Spring事务调用Service和Service之间的调用原理解析多个service互相调用的事务处理 今天,想在一个servi...
    99+
    2022-11-13
  • springboot多个service互相调用的事务处理方法
    本文小编为大家详细介绍“springboot多个service互相调用的事务处理方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“springboot多个service互相调用的事务处理方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-06-29
  • ReactHook父子组件相互调用函数方式
    目录React Hook 父子组件相互调用函数1.子组件调用父组件函数方法2.父组件调用子组件函数方法React Hook 父子组件传值父组件子组件React Hook 父子组件相互...
    99+
    2022-11-13
  • vue中data里面的数据相互使用方式
    目录data里面的数据相互使用具体代码如下data里的数据不能相互引用问题data里面的数据相互使用 今天在写代码的时候,遇到一个问题,我想使用data里面的一个对象使用data里面...
    99+
    2022-11-13
  • 使用FeignClient进行微服务交互方式(微服务接口互相调用)
    目录使用FeignClient进行微服务交互先写一个公共方法然后写一个Feign调用被Feign调用的方法如下@FeignClient调用微服务注意事项FeignClient接口不能...
    99+
    2022-11-13
  • 使用JAXBContext轻松实现Java和xml的互相转换方式
    JAXBContext实现Java和xml的互相转换 类文件注解:@XmlRootElement不可缺少 <span style="font-size:14px;">...
    99+
    2022-11-12
  • Android Socket服务端与客户端用字符串的方式互相传递图片的方法
    发送图片: 首先找到具体传递的图片: <span style="font-family: comic sans ms,sans-serif; font-size: ...
    99+
    2022-06-06
    客户端 方法 字符串 图片 字符 socket Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作