繁体   English   中英

请求的 bean 当前正在创建中:在将一个 spring 引导应用程序添加到另一个过程中是否存在无法解析的循环引用?

[英]Requested bean is currently in creation: Is there an unresolvable circular reference During adding one spring boot applciation to another?

场景:我有一个 springboot 应用程序,它执行类似批处理的功能(从 s3 处理读取数据并写入 sql 表)。

我还有一个单独的 Jmix 应用程序。 所以需要将批处理添加到这个 jmix 应用程序,以便我可以从 jmix 应用程序运行批处理

我能够将它添加到 buid.gradle 中,我在 jmix 应用程序的主要 class 中完成了如下操作

@SpringBootApplication(scanBasePackages = {"com.publicismedia.uniquebatchjava"})
@EnableJmixDataRepositories(basePackages = {})
@EnableJpaRepositories(basePackages = {"com.publicismedia.uniquebatchjava.repository"})

这样我们就可以在 Jmix 应用程序中使用 bean( scanBasePackages = {"com.publicismedia.uniquebatchjava"} )Jmix 尝试为所有存储库 class 创建 bean,无论它是在主应用程序还是依赖应用程序上所以我添加这个@EnableJmixDataRepositories(basePackages = {})避免 jmix 扫描任何内容和@EnableJpaRepositories(basePackages = {"com.publicismedia.uniquebatchjava.repository"})允许 jpa 扫描依赖应用程序

现在的错误是

由以下原因引起:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为“OAuth2AuthorizationServerConfiguration”的 bean 时出错:通过字段“tokenStore”表示的不满意依赖关系; 嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException:在 class 路径资源 [io/jmix/autoconfigure/securityoauth2/SecurityOAuth2AutoConfiguration$JdbcTokenStoreConfiguration.class] 中定义名称为“sec_TokenStore”的 bean 创建时出错:通过方法“tokenStore”表达的不满足依赖关系参数0; 嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'stellantisroiApplication': Unsatisfied dependency expressed through field 'batchExecuter'; 嵌套的异常是 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'batchExecuter': Unsatisfied dependency expressed through field 'batchConfigRepository'; 嵌套的异常是 org.springframework.beans.factory.BeanCreationException:在 com.publicismedia.uniquebatchjava.repository.BatchConfigRepository 中定义的名为“batchConfigRepository”的 bean 在 StellantisroiApplication 上声明的@EnableJpaRepository 中定义时出错:无法创建内部 bean“(内部 bean)# 51e0629a'类型[org.springframework.orm.jpa.SharedEntityManagerCreator]同时设置bean属性'entityManager'; 嵌套异常是 org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#51e0629a': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; 嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException:在 class 路径资源 [io/jmix/autoconfigure/data/JmixLiquibaseAutoConfiguration.class] 中定义名称为“jmix_Liquibase”的 bean 创建时出错:通过方法“liquibase”参数 0 表示的不满足依赖关系; 嵌套异常是 org.springframework.beans.factory.BeanCurrentlyInCreationException:创建名称为“dataSource”的 bean 时出错:当前正在创建请求的 bean:是否存在无法解析的循环引用?

考虑到com.package1.*是主要应用程序, com.package2.*作为依赖应用程序,是否有人有任何解决方案或只是如何将 spring 启动 maven 应用程序添加到其他 spring 启动 maven 应用程序

首先请修复标题,因为它说的内容与随附的堆栈跟踪不同。 请阅读

请求的 bean 当前正在创建中:是否存在无法解析的循环引用?

这意味着您有一个 bean“A”依赖于另一个 bean“B”,但“B”依赖于“A”,这就是循环引用的原因。 当然这个循环可以更长,比如: A -> B -> C -> A 您必须遵循良好的设计原则并以某种方式删除此循环,或者您可以在字段上使用@Lazy注释以稍后启动 bean(默认情况下它是急切的依赖)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM