有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaSpring引导:库是否会从父应用程序/服务获取依赖关系

在spring服务中,我也在使用spring库

我注意到这一场景起了作用:

  1. 在库中使用spring重试逻辑,但不会在库中导入spring重试JAR
  2. 将父服务中的库用作maven依赖项
  3. 父服务导入spring重试maven JAR

库代码使用父应用程序中的maven JAR是否正常?不需要自己进口罐子?我的直觉告诉我应该这样做,因为生成的编译单元将注入依赖项。。但不确定

抱歉,如果这是一个非常天真的问题,但我的搜索没有给出一个好的答案(可能需要使用正确的关键字)


共 (1) 个答案

  1. # 1 楼答案

    我不确定你说的对,也许这个问题应该重新措辞

    您可以说,有一个“spring引导库”使用spring重试逻辑。 如果是这样,这个库有一个maven模块,它被编译成一个普通的jar,对吗

    但如果是这样的话,如果它使用spring重试库中的类/接口/注释,并且不在编译类路径上,那么它是如何编译的呢?我相信您在依赖项中确实有这个spring retry库,但只是没有注意到(在spring引导库模块中尝试mvn dependency:tree以查看依赖项)

    除此之外,通常当您开发一个库时,它打算被不同的应用程序重用,如果它自己有依赖项,通常它应该在项目的库pom中列出它们。通常开发库的人也会尽量减少库本身的依赖项列表

    所以如果pom。库的xml没有列出它甚至不会编译的所需依赖项

    现在在运行时,所有依赖项(当然包括transitive)都应该对spring引导应用程序可用,否则使用这些依赖项的类可能无法加载。但除此之外,作为一个运行时框架,spring并不真正关心依赖项是如何进入BOOT-INF/lib文件夹的——只要依赖项存在,它就可以工作