了解 Spring 上下文初始化顺序

2024-01-11

我有一组复杂的 bean 以及它们之间的依赖关系。所有豆子都是@Service, @Repository or @Controller带注释,我使用@PostConstruct注解。虽然存在一些循环依赖,但系统仍然由 Spring 正确初始化。

然后我添加了一个简单的控制器,仅依赖于其中一项服务。理论上,系统应该能够启动,因为理论上它可以首先像以前一样设置系统,然后设置新的控制器。但 Spring 抱怨它无法设置上下文:

Error creating bean with name 'userService': Requested bean is currently in creation: Is there an unresolvable circular reference?

我可以以某种方式帮助 Spring 如何排序上下文初始化吗?我认为主要问题是userService系统中大量使用它来进行身份验证。


最好的解决方案就是消除循环依赖;我还没有遇到过需要这样的结构的情况。但如果您确实想坚持使用它,那么上述问题可能是由于您在某处进行了构造函数注入:

循环依赖 如果您主要使用构造函数注入,则可以编写和配置您的类和 bean,从而创建无法解析的循环依赖场景。 考虑这样的场景:类 A 需要通过构造函数注入提供类 B 的实例,类 B 需要通过构造函数注入提供类 A 的实例。如果您为类 A 和 B 配置 Bean 相互注入,Spring IoC 容器将在运行时检测到此循环引用,并抛出 BeanCurrentlyInCreationException。

此问题的一种可能的解决方案是 编辑一些的源代码 您的课程可以通过以下方式配置 设置器而不是通过构造函数。 另一种解决方案是不使用 构造函数注入并坚持 仅设置器注入。换句话说,虽然除了最罕见的情况外,通常应该避免这种情况 情况,有可能 配置循环依赖 设置器注入。与典型的不同 情况(没有循环依赖), bean A 之间的循环依赖 豆子 B 会强制其中一颗豆子 之前注射到另一个 本身已完全初始化(a 经典的先有鸡还是先有蛋的场景)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 Spring 上下文初始化顺序 的相关文章

  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • 如何在不超过最大值的情况下增加变量?

    我正在为学校开发一个简单的视频游戏程序 我创建了一个方法 如果调用该方法 玩家将获得 15 点生命值 我必须将生命值保持在最大值 100 并且由于我目前的编程能力有限 我正在做这样的事情 public void getHealed if h
  • Cassandra java驱动程序协议版本和连接限制不匹配

    我使用的java驱动程序版本 2 1 4卡桑德拉版本 dsc cassandra 2 1 10cql 的输出给出以下内容 cqlsh 5 0 1 Cassandra 2 1 10 CQL spec 3 2 1 Native protocol
  • 使用 AES SecretKey 的 Java KeyStore setEntry()

    我目前正在 Java 中开发一个密钥处理类 特别是使用 KeyStore 我正在尝试使用 AES 实例生成 SecretKey 然后使用 setEntry 方法将其放入 KeyStore 中 我已经包含了代码的相关部分 The KS Obj
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • Java 中的“Lambdifying”scala 函数

    使用Java和Apache Spark 已用Scala重写 面对旧的API方法 org apache spark rdd JdbcRDD构造函数 其参数为 AbstractFunction1 abstract class AbstractF
  • 使用过滤器@ComponentScan所有包的危险

    我现在正在开发一个概念应用程序 我想使用组件扫描来使用特定的自定义 Spring 元注释来获取类路径上任何位置的所有类 我的注释如下所示 Target value ElementType TYPE Retention value Reten
  • 以编程方式在java的resources/source文件夹中创建文件?

    我有两个资源文件夹 src 这是我的 java 文件 资源 这是我的资源文件 图像 properties 组织在文件夹 包 中 有没有办法以编程方式在该资源文件夹中添加另一个 properties 文件 我尝试过这样的事情 public s
  • 在游戏视图下添加 admob

    我一直试图将 admob 放在我的游戏视图下 这是我的代码 public class HoodStarGame extends AndroidApplication Override public void onCreate Bundle
  • 没有从 {classpath*:META-INF/persistence.xml} 解析持久性单元

    使用 Spring Core 3 0 5 Hibernate 3 6 0 这个问题的标题是在使用我正在维护的应用程序启动 Tomcat Web 服务器 6 0 29 时引发的 java lang IllegalStateException
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • 欧洲中部时间 14 日 3 月 30 日星期五 00:00:00 至 日/月/年

    我尝试解析格式日期Fri Mar 30 00 00 00 CET 14至 日 月 年 这是我的代码 SimpleDateFormat formatter new SimpleDateFormat dd MM yyyy System out
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 为什么这个作业不起作用?

    我有课Results which extends ArrayList
  • hashcode 的默认实现为以相同方式构造的对象返回不同的值

    我在这里编写一个示例代码 public class Test private int i private int j public Test TODO Auto generated constructor stub public Test

随机推荐

  • 使用 jQuery 动态检查和取消检查复选框:bug?

    我制作了一个脚本来控制主从复选框 自动选中和取消选中 这是我的JS document ready function myCheck click function myCheck attr checked false myCheck clic
  • Qt - 信号槽中的参数

    我有一个 QPushButton QDateEdit 和另一个自定义对象 我想将按钮连接到日期编辑对象 当我单击按钮时 日期编辑对象会将其设置日期更改为自定义对象上定义的日期 有点像这样 connect pushbutton SIGNAL
  • 使用 LOGON32_LOGON_NEW_CREDENTIALS 的 LogonUser 适用于远程不受信任的域计算机

    因此 两台机器之间不存在信任 它们位于不同的域中 我已使用登录类型使用 LogonUser API 成功连接到远程计算机 LOGON32 LOGON NEW CREDENTIALS 我能够使用 UNC 共享检索目录的内容 并创建文件流来 下
  • App Store Connect 不显示所有销售 - 为什么?

    为了能够更好地估计我们应用程序的收入 我们实现了一个数据库功能 该功能可靠地 我们在沙盒模式下测试了它 为订阅者在订阅后增加了一个订阅计数器 仅当应用内购买成功后 即当我们收到 StoreKit 的反馈以启用高级功能时 才会触发此功能 现在
  • 修复使用 uploadify 时 django csrf 错误

    我在 django 管理中使用 uploadify 但收到 403 错误 当我使用 csrf exempt错误消失了 但是这是非常危险的 有没有更好的方法通过使用 csrf exempt 装饰器来解决这个问题而不损害管理页面 提前致谢 听起
  • 是否可以使用“firebase-admin”包调用 firebase 函数?

    我有带有基于服务帐户的访问权限的节点应用程序 所以我使用firebase admin 正如我之前所看到的 firebase admin大部分重复firebase包 除了身份验证部分 签名和其他一些部分 但现在我想调用函数 但找不到任何等效项
  • Spring 服务层的 JUnit 测试用例

    我正在尝试配置 JUnit 并为 Spring 3 2 MVC 应用程序的服务层编写测试用例 我找不到太多关于如何从头开始配置 JUnit 并使其适用于 Spring 服务层的信息 这是我的问题 我真的不知道要使用什么版本的 junit 所
  • 如何在构建时在maven中设置项目版本?

    我正在尝试在我们的项目中实现语义版本控制 我测试了 Maven semver 插件 但这对我没有帮助 所以请不要问我为什么 我最终使用了 Maven Groovy 它的工作原理就像一个魅力 但是 当我安装或部署 Maven 项目时 存储库中
  • PHP/GD - 透明背景

    我想结合 GD 在 PHP 中执行以下操作 不幸的是 ImageMagick 不是一个选项 但这似乎是一个常见问题 因此has作为一个解决方案 我似乎找不到它 我想创建一个具有透明背景的PNG 然后我想在上面画一个矩形 在上面复制一个图像
  • 了解 的上限和下限 ?在 Java 泛型中

    我真的很难理解通配符参数 对此我有几个问题 作为类型参数只能在方法中使用 例如 printAll MyList
  • 如何递归读取所有记录并按级别深度SQL显示

    有没有办法在类似的表中递归读取记录并按深度级别排序 table id int parent int value string 1 1 some 2 1 some2 3 2 some3 4 2 some4 5 3 some5 6 4 some
  • C/C++:头文件中的静态函数,是什么意思?

    我知道在源文件中声明静态函数意味着什么 我正在阅读一些代码 发现头文件中的静态函数可以在其他文件中调用 函数是在头文件中定义的吗 这样实际的代码就直接在函数中给出 如下所示 static int addTwo int x return x
  • 如何向带状图添加多个标记?

    我想知道如何在同一个带状图中获得多个标记 tips sns load dataset tips coldict Sun red Thur blue Sat yellow Fri green markdict Sun x Thur o Sat
  • Android的Activity.runOnUiThread不是静态的,那么我该如何使用它呢?

    例如 如果我有一个线程正在执行昂贵的操作 并且我想从该线程在 Main 活动 类中触发 runOnUiThread 显然我不应该创建我的活动类 主要 的实例 所以如果我尝试 Main runOnUiThread mRunnable 从我的线
  • ActiveRecord 使用 JSON 而不是 YAML 进行序列化

    我有一个使用序列化列的模型 class Form lt ActiveRecord Base serialize options Hash end 有没有办法让序列化使用 JSON 而不是 YAML 在 Rails 3 1 中你可以 clas
  • 每次基于 Selenium 的自动化测试后我应该退出浏览器吗?

    我试图使我的 selenium 测试尽可能原子且相互独立 因此我决定退出浏览器并在每次测试运行后创建一个新的 Webdriver 实例 这种方法对我来说更有意义 并且通过讨论这个问题的多个线程得到了强化 e G 这是对相关问题的回答 htt
  • 没有entityClass,并且由于entityClassSet中有多个,所以无法自动推导

    我正在尝试实现具有多个实体类的解决方案 但它失败并显示以下错误消息 没有配置entityClass null 并且因为有多个 EntityClassSet 类 com myspace wla JobA 类 com myspace wla J
  • 如何将我的 csv 文件转换为这个 scikit learn 数据集

    抱歉 如果我在这里没有使用正确的术语 我有一个包含我自己数据的 csv 文件 我首先需要将其转换为另一个format http scikit learn org stable modules generated sklearn datase
  • 如何在 LinearLayoutManager - RecyclerView 中重叠项目(如堆叠卡片)

    是否可以重叠 RecyclerView 中的项目 我正在尝试使用 LinearLayoutManager 我的要求与 LinearLayoutManager 中的相同 我只需要从上到下重叠内部的项目 如堆叠卡片 我见过一些变体 https
  • 了解 Spring 上下文初始化顺序

    我有一组复杂的 bean 以及它们之间的依赖关系 所有豆子都是 Service Repository or Controller带注释 我使用 PostConstruct注解 虽然存在一些循环依赖 但系统仍然由 Spring 正确初始化 然