Java 我们能否只在加载了一个maven依赖项之后再添加一个maven依赖项?

Java 我们能否只在加载了一个maven依赖项之后再添加一个maven依赖项?,java,spring,maven,Java,Spring,Maven,我通过maven依赖项导入一个jar,jar运行一个无限循环。我想在加载jar之前首先完全解决一些其他依赖项 我要装货 org.springframework.boot 弹簧靴起动器 org.springframework.boot SpringBootStarterWeb org.springframework.boot 弹簧靴起动器执行器 等待,直到我在日志中收到 Exposing 2 endpoint(s) beneath base path '/actuator' Tomcat st

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

我要装货


org.springframework.boot
弹簧靴起动器
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧靴起动器执行器
等待,直到我在日志中收到

Exposing 2 endpoint(s) beneath base path '/actuator'
Tomcat started on port(s): 1339 (http) with context path ''
然后加载我的jar依赖项

发生的情况是,它开始加载依赖项,然后在jar中陷入无限循环,并且没有完成


感谢

jar没有运行无限循环,jar是工件内部的一组二进制源(可能还有资源,如json、属性文件、xml等)

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

现在,由于您有一个类似spring的运行时框架,它可以在以下条件下在JAR中运行一些bean:

  • 以惰性方式加载bean(仅当首先调用bean的方法时)
  • 异步运行bean的方法(通过使用
    @Async
    注释)
  • 仅当指定了某些配置文件(或其他类似于属性的条件)时才加载bean
所有这些都是在spring的帮助下在运行时定制应用程序行为的方法,但从技术上讲,maven在这里没有任何作用

所以为了

避免jar中的无限循环

您可以找出到底是哪个bean导致了无限循环(同样,一般来说,它不是一个“jar”,而是某个特定的bean)

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

在任何情况下,如果您通过spring加载bean,它都有一个线程来填充应用程序上下文(即加载所有bean并使用依赖项注入机制)。
因此,如果由于某些bean在其初始化(构造函数或后期构造方法)期间导致无限循环而使该线程陷入困境,则整个应用程序都将陷入困境。

Maven依赖项将在构建期间使用。您不能影响运行时行为。因此,虽然可以在Tomcat内部解决问题,但不能使用Maven。