Dav*_*25K 5 java gradle spring-boot
有时我在启动由 Gradle 构建的 Java Spring Boot 单 JAR 应用程序时会收到 BeanCreationException。我的调查表明它取决于 JAR 文件以及它是如何由 Gradle 构建的。大多数情况下(但并非总是如此),当我在 Linux 系统上构建项目时,我会看到异常。但是我从来没有用在 Windows 上构建的 JAR 或从 IntelliJ Idea 运行时重现这个问题。
我尝试将工作 JAR 的内容与抛出异常的 JAR 的内容进行比较 - 所有 *.class 文件(包括元和资源)都是二进制相等的,唯一的区别在于文件在 JAR/ZIP 存档中的存储顺序. 我还尝试在 Windows 上解压缩失败的 JAR,然后将其重新打包成一个新的 JAR 文件(使用 7-zip)——应用程序启动时没有任何异常。这个奇怪的解决方法解决了这个问题,但这不是我每次在 linux 机器上构建后都想做的事情。
异常建议检查循环引用,所以我尝试用 @Autowired bean 构造函数替换 @Autowired 属性来帮助我找到问题,但这没有帮助。堆栈跟踪没有提到我的任何类,所以我不知道哪个 bean 可能对这个问题负责。而且由于该问题仅偶尔发生并且可以通过重新打包 JAR 文件来解决,因此我不确定是否存在任何循环引用。
请你帮助我好吗?欢迎任何意见或建议。
JDK:openjdk 8u262 Gradle 版本 5.6 Spring boot 2.3.1
异常信息:
BeanCreationException: Error creating bean with name 'webConfig':
Invocation of init method failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'requestMappingHandlerAdapter' defined in class path resource
[org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]:
Unsatisfied dependency expressed through method 'requestMappingHandlerAdapter' parameter 0;
nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException:
Error creating bean with name 'mvcContentNegotiationManager':
Requested bean is currently in creation: Is there an unresolvable circular reference?
Run Code Online (Sandbox Code Playgroud)
默认情况下,Spring 管理自己 bean 的生命周期,然后在启动期间安排它们的初始化顺序。
这里是使用 @DependsOn 注释来订购bean实例化的完整示例。
您还可以在Spring官方文档中找到更多详细信息
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |