Eclipse Spring Boot - 在TransactionAutoConfiguration和Neo4jDataAutoConfiguration之间检测到AutoConfigure循环

时间:2017-12-05 12:12:27

标签: java spring eclipse spring-boot

昨天我正在开发的Spring Boot应用程序(1.5.2.RELEASE)上发生了一个非常奇怪的错误。我在Eclipse中运行项目时开始收到以下异常。

从命令行运行时,一切正常(但我仍然需要在开发和调试时从Eclipse运行它)。我尝试deleting the .classpath file,重新导入项目,在Eclipse中清理它们,但错误仍然存​​在

2017-12-05 13:46:45.620 ERROR 11048 --- [  restartedMain] o.s.b.f.s.DefaultListableBeanFactory     : Destroy method on bean with name 'org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory' threw an exception
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@744ed1b7: startup date [Tue Dec 05 13:46:43 EET 2017]; root of context hierarchy
at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:404) [spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]

<STACK-TRACE>

2017-12-05 13:46:45.635 ERROR 11048 --- [  restartedMain] o.s.boot.SpringApplication               : Application startup failed

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.almetis.webraadmin.WebRaAdminApplication];
nested exception is java.lang.IllegalStateException: AutoConfigure cycle detected between org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration and org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration  
at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:545) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]

<STACK-TRACE>

Caused by: java.lang.IllegalStateException: AutoConfigure cycle detected between org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration and org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration   
at org.springframework.util.Assert.state(Assert.java:70) ~[spring-core-4.3.7.RELEASE.jar:4.3.7.RELEASE]

1 个答案:

答案 0 :(得分:4)

升级我的主项目和库以使用Spring Boot 1.5.8.RELEASE后,我可以再次在Eclipse中运行我的应用程序。

1.5.2.RELEASE与Neo4J集成似乎存在问题(请参阅github issueissue)。

在更好地了解之后,我看到了原因:我的主应用程序使用的是Spring Boot 1.5.2,其中一个正在使用的库是使用Spring Boot 1.5.8。

在使用我的库和主应用程序的Spring Boot版本后,我看到了:

  • 如果所有库和主应用程序都在使用Spring Boot 1.5.2,那么一切正常
  • 如果所有库和主应用程序都使用Spring Boot 1.5.8,那么一切正常

  • 如果库使用的是Spring Boot 1.5.8且主应用程序使用的是Spring Boot 1.5.2,则会抛出问题中的异常

错误有点神秘(至少可以说),但主要的好处是保持所有库和应用程序在同一个Spring Boot版本