我通过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的无限循环中,并没有完成。
谢谢
问题来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
jar不会运行无限循环,jar是工件内部的一堆二进制源(可能还有一些资源,例如json,属性文件,xml等)。
因此,maven作为构建工具的工作是准备工件。一旦构建了工件,专家就完成了,您将无法再影响/更改事物。
现在,由于您有一个像spring这样的运行时框架-它可以在以下条件下在jar中运行一些bean:
所以为了
避免罐子内部无限循环
您可以找出哪个bean导致了无限循环(同样,它通常不是“ jar”,而是某些特定的bean)
使用@Async批注或定义自己的线程池,然后运行在其中导致循环的Bean的方法(这@Async是一种更有弹性的方法)
无论如何,如果您是通过Spring加载bean的,它都有一个线程来填充应用程序上下文(即加载所有bean并使用依赖项注入机制)。因此,如果此线程因某个bean在初始化期间导致无限循环而被卡住(构造函数或后构造方法),则整个应用程序将被卡住。
回答来源:Stack Overflow