首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我们能否仅在加载了彼此之后才添加maven依赖项?

我们能否仅在加载了彼此之后才添加maven依赖项?
EN

Stack Overflow用户
提问于 2020-03-13 13:17:13
回答 1查看 142关注 0票数 0

我通过maven依赖项导入一个jar,jar运行一个无限循环。在加载jar之前,我希望先完全解决其他一些依赖关系。

我想装货

代码语言:javascript
运行
复制
<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>

等待直到我收到我的日志

代码语言:javascript
运行
复制
Exposing 2 endpoint(s) beneath base path '/actuator'
Tomcat started on port(s): 1339 (http) with context path ''

然后加载我的jar依赖项。

所发生的情况是,它开始加载它们的依赖项,然后在jar中的无限循环中被捕获,并且没有完成。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-13 13:50:36

jar不运行无限循环,jar是一堆二进制源(可能还有资源,如jsons、属性文件、xmls等)。在神器里面。

因此,maven作为构建工具的工作是准备工件。一旦构建了工件,maven就完成了,您就不能再影响/改变事情了。

现在,由于您有一个像spring这样的运行时框架--它可以在条件下在jars中运行一些bean:

仅当首先调用bean的方法时,annotation)

  • Load

  • 才以惰性的方式加载bean),
  • 异步地运行bean的方法(仅在指定了配置文件(或其他条件,如属性)时才使用@Async
  • bean。

所有这些都是在spring的帮助下自定义应用程序在运行时的行为的方法,但在技术上maven在这里没有任何用处。

所以为了

避免了jar中的无限循环

您可以找出哪个bean会导致无限循环(同样,它通常不是“jar”,而是一些特定的bean)。

使用@Async注释或定义您自己的线程池,并运行导致循环的bean方法(@Async是一种较为春季的方法)

在任何情况下,如果您在spring之前加载bean,那么它有一个线程来填充应用程序上下文(即加载所有bean并使用依赖注入机制)。因此,如果这个线程因为某些bean在初始化过程中导致无限循环(构造函数或后期构造方法)而被卡住,那么整个应用程序就会被卡住。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60671212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档