org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“commandGateway”的 bean 在类路径资源中定义时出错

问题描述

我正在将现有的 axon-core : 3.3.6 升级到 4.0.4,但在构建应用程序时遇到了这个问题,我该如何解决

这里是个例外:

通过构造函数参数0表示的不满足的依赖; 嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException: 使用在类路径中定义的名称“commandGateway”创建 bean 时出错 资源 [org/axonframework/springboot/autoconfig/AxonAutoConfiguration.class]: 通过方法“commandGateway”表达的不满意依赖 参数 0;嵌套异常是 org.springframework.beans.factory.NoUniqueBeanDeFinitionException:否 'org.axonframework.commandhandling.CommandBus' 类型的合格 bean 可用:在候选者中发现不止一个“主要”bean: [commandBus,分布式CommandBus]

解决方法

共享异常提到:

在候选中发现了不止一个“主要”bean:[commandBus,分布式命令总线]

这可能意味着您的 CommandBus bean 被 @Primary 注释。如果是这样,您可以删除该注释,因为 DistributedCommandBus 实例应该仅用作主要实例。

如果不是这种情况,您可以通过显式配置 CommandGateway 来解决该问题。这样,您就可以覆盖 Axon 的自动配置,这显然很难解决要使用的“命令总线”。您要构建的类是 DefaultCommandGateway,它引用 CommandBus 作为网关。您可能想要注入 DistributedCommandBus

最后一点,Axon 已经升级到 4.5 版。在此过程中已经进行了许多可能值得的改进。您遇到的某些自动配置问题也不太可能在某个中间版本中得到解决。