JavaSpring引导:库是否会从父应用程序/服务获取依赖关系
在spring服务中,我也在使用spring库
我注意到这一场景起了作用:
- 在库中使用spring重试逻辑,但不会在库中导入spring重试JAR
- 将父服务中的库用作maven依赖项李>
- 父服务导入spring重试maven JAR李>
库代码使用父应用程序中的maven JAR是否正常?不需要自己进口罐子?我的直觉告诉我应该这样做,因为生成的编译单元将注入依赖项。。但不确定
抱歉,如果这是一个非常天真的问题,但我的搜索没有给出一个好的答案(可能需要使用正确的关键字)
# 1 楼答案
我不确定你说的对,也许这个问题应该重新措辞
您可以说,有一个“spring引导库”使用spring重试逻辑。 如果是这样,这个库有一个maven模块,它被编译成一个普通的jar,对吗
但如果是这样的话,如果它使用spring重试库中的类/接口/注释,并且不在编译类路径上,那么它是如何编译的呢?我相信您在依赖项中确实有这个spring retry库,但只是没有注意到(在spring引导库模块中尝试
mvn dependency:tree
以查看依赖项)除此之外,通常当您开发一个库时,它打算被不同的应用程序重用,如果它自己有依赖项,通常它应该在项目的库pom中列出它们。通常开发库的人也会尽量减少库本身的依赖项列表
所以如果pom。库的xml没有列出它甚至不会编译的所需依赖项
现在在运行时,所有依赖项(当然包括transitive)都应该对spring引导应用程序可用,否则使用这些依赖项的类可能无法加载。但除此之外,作为一个运行时框架,spring并不真正关心依赖项是如何进入
BOOT-INF/lib
文件夹的——只要依赖项存在,它就可以工作