spring自动装配依赖包

我认为这篇文章是在企业应用程序开发中使用Spring的最佳实践。

使用Spring编写企业Web应用程序时,服务层中的服务量可能会增加。

服务层中的每个服务可能会消耗其他服务,这些服务将通过@Autowire注入。

问题:当服务数量开始增加时,可能会发生循环依赖性。 它不必指出设计问题……只要在许多服务中自动连接并消耗其他服务之一的中央服务就足够了,就可能发生循环依赖。

循环依赖关系将导致Spring Application Context失败,并且症状是一个错误,清楚地表明了问题所在:

名称为'*********'的Bean已被注入其他Bean [******,**********,**********, **********]的原始版本(作为循环引用的一部分),

但最终被包装(例如,作为自动代理创建的一部分)。 这意味着所说的其他bean不使用该bean的最终版本。 这通常是过度渴望类型匹配的结果–例如,考虑在关闭“ allowEagerInit”标志的情况下使用“ getBeanNamesOfType”。

现代Spring应用程序中的问题是,bean是通过@nnotations(而不是通过XML)定义的,而allowEagerInit标志的选项根本不存在。
用@Lazy注释类的替代解决方案对我来说根本不起作用。

可行的解决方案是将default-lazy-init =“ true”添加到应用程序配置xml文件中:

<?xml version="1.0" encoding="UTF-8"?>
<beans default-lazy-init="true" xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd ><context:component-scan base-package="com.package"></context:component-scan>
<context:annotation-config/>
...
</beans>

希望这可以帮助。 不知道为什么它不是默认配置。
如果您对为什么这种配置可能不满意有任何建议,请与我们所有人分享。

更新:
经过重新设计后,上述解决方案根本无法解决问题。
因此,我设计了更积极的解决方案,以5个步骤解决了该问题 。

祝好运!

参考:通过Gal Levinsky博客博客中的JCG合作伙伴 Gal Levinsky 解决了Spring Autowiring中的循环依赖问题 。

翻译自: https://www.javacodegeeks.com/2012/08/resolve-circular-dependency-in-spring.html

spring自动装配依赖包

spring自动装配依赖包_解决Spring自动装配中的循环依赖相关推荐

  1. spring mysql中文乱码问题_解决Spring下MySQL出现乱码的问题

    花了我宝贵的3个小时才搞定,失败! 以前都是用Postgres,基本没有用过Mysql .怎么Postgres的时候从来没有这么麻烦啊,惆怅~~ 本来我的代码都是基于UTF-8的,用本机的Window ...

  2. 解决Spring自动装配中的循环依赖

    我认为这篇文章是在企业应用程序开发中使用Spring的最佳实践. 使用Spring编写企业Web应用程序时,服务层中的服务量可能会增加. 服务层中的每个服务可能会消耗其他服务,这些服务将通过@Auto ...

  3. Spring中的循环依赖解决详解

    目录 1 什么是循环依赖? 1.1 构造器循环依赖 1.2 field属性注入循环依赖 1.3 field属性注入循环依赖(prototype) 2 循环依赖处理 2.1 构造器循环依赖(无法解决) ...

  4. maven引入hadoop_Maven引入hadoop依赖包出错解决办法

    错误: ArtifactTransferException: Failure to transfer org.apache.hadoop:hadoop-hdfs:jar:2.6.0 from http ...

  5. Spring中的循环依赖

    目录 一.什么是循环依赖? 二.Bean的生命周期 2.1 Spring Bean 的生命周期 2.2 Bean 的生成步骤 三.三级缓存 3.1三个缓存分别有什么作用 四.思路分析 4.1 为什么 ...

  6. 面试:讲一讲Spring中的循环依赖

    前言 Spring中的循环依赖一直是Spring中一个很重要的话题,一方面是因为源码中为了解决循环依赖做了很多处理,另外一方面是因为面试的时候,如果问到Spring中比较高阶的问题,那么循环依赖必定逃 ...

  7. Spring IoC 源码系列(四)bean创建流程与循环依赖问题分析

    创建单例 bean 的代码细节在 org.springframework.beans.factory.support.AbstractBeanFactory#getBean 中,getBean 顾名思 ...

  8. Spring中的循环依赖问题

    Spring的的循环依赖问题 文章目录 Spring的的循环依赖问题 一. 简介 1.什么是循环依赖问题? 2.循环依赖有什么影响? 二. 循环依赖复现 三. 解决方案 1. 重新设计 2 使用 @L ...

  9. 面试必杀技,讲一讲Spring中的循环依赖

    本系列文章: 听说你还没学Spring就被源码编译劝退了?30+张图带你玩转Spring编译 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configu ...

最新文章

  1. SELECT ANY DICTIONARY
  2. 项目Alpha冲刺 10
  3. PAT-1124. Raffle for Weibo Followers (20)
  4. 【转】 不适用Sqrt函数开方,精度小于指定精度
  5. findbugs插件_提升编码效率的IntelliJ IDEA必备插件
  6. STL源码学习----集合相关算法
  7. Nginx负载均衡状态介绍
  8. LeetCode 519. 随机翻转矩阵(哈希)
  9. Spark整合Ray思路漫谈
  10. 六逻辑层次 职业规划案例_我如何在六个月内改变职业并找到了一名开发人员...
  11. asp.net findcontrol html控件,findcontrol-在ASP.NET中查找控件的更好方法
  12. anvyiew java版_细说Anyview阅读器背后的故事
  13. Linux命令之last
  14. 【设计模式】描述先有鸡还是先有蛋
  15. 微信小程序修改数组中的元素_微信小程序——this.setData()动态修改数组中的某一值...
  16. gallery3d的源码分析——入口
  17. 内部软件技术文档怎么做?
  18. android listview 导航条,Android侧边导航栏+ListView基础实践
  19. tensorboard: error: invalid choice: ‘(No‘ (choose from ‘serve‘, ‘dev‘)
  20. window go安装和正确 下载包姿势

热门文章

  1. JAVA实现汉字转换为拼音 pinyin4j/JPinyin
  2. 《金色梦乡》金句摘抄(十)
  3. Oracle数据库基本概念理解(1)
  4. 范式 第一 第二 第三范式
  5. php类常量的特点,php类常量是什么?类常量用法详解
  6. 5-输入输出系统IO
  7. java中两个map的融合(两个map有相同字段)
  8. tomcat(10)安全性
  9. 2016第11届四川省高校计算机(软件)院长论坛纪要(旁听)
  10. 算法设计与分析:(二)动态规划