我通过maven依赖项导入一个jar,jar运行一个无限循环。在加载jar之前,我希望先完全解决其他一些依赖关系。
我想装货
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
等待直到我收到我的日志
Exposing 2 endpoint(s) beneath base path '/actuator'
Tomcat started on port(s): 1339 (http) with context path ''
然后加载我的jar依赖项。
所发生的情况是,它开始加载它们的依赖项,然后在jar中的无限循环中被捕获,并且没有完成。
谢谢
发布于 2020-03-13 13:50:36
jar不运行无限循环,jar是一堆二进制源(可能还有资源,如jsons、属性文件、xmls等)。在神器里面。
因此,maven作为构建工具的工作是准备工件。一旦构建了工件,maven就完成了,您就不能再影响/改变事情了。
现在,由于您有一个像spring这样的运行时框架--它可以在条件下在jars中运行一些bean:
仅当首先调用bean的方法时,annotation)
@Async
所有这些都是在spring的帮助下自定义应用程序在运行时的行为的方法,但在技术上maven在这里没有任何用处。
所以为了
避免了jar中的无限循环
您可以找出哪个bean会导致无限循环(同样,它通常不是“jar”,而是一些特定的bean)。
使用@Async
注释或定义您自己的线程池,并运行导致循环的bean方法(@Async
是一种较为春季的方法)
在任何情况下,如果您在spring之前加载bean,那么它有一个线程来填充应用程序上下文(即加载所有bean并使用依赖注入机制)。因此,如果这个线程因为某些bean在初始化过程中导致无限循环(构造函数或后期构造方法)而被卡住,那么整个应用程序就会被卡住。
https://stackoverflow.com/questions/60671212
复制相似问题