附 2:专有名词解释
章节中有提到依赖本工程内部的 common模块,里面一般会定义一些全部模块都会用到的一些基础功能,好比 全局异常码、分布式锁、统一响应实体等等
在互联网公司一般都是分事业部的,而后会存在一个叫 基础部门/基础中心的事业部,这个部门可能会提供一些公司的基本类库,eg:mq相关的统一的amqp操做、rpc相关的统一的dubbo操做等等。最终这些都会以jar包的形式推送到maven仓库(公司内部须要搭建专有的maven仓库)。如今是spring boot的时代,若是公司用的是springboot这一套体系的话,这些jar包一般是以starter的方式提供,再利用springboot的自动装配机制,其余事业部能够很方便的对接。
常见的springboot、mybatis
因为公司内部使用的是springboot相关的技术栈,所以,我开发的二方库包是以starter的方式提供的。整个对接流程只须要两步:spring
一、须要将二方库包推送至maven仓库springboot
二、其余事业部只须要添加二方库包的maven坐标mybatis
这里会有一些小细节:二方库包是一个项目工程,也会依赖一些二方库、三方库的状况。一般,二方库内部依赖的jar包的scope都会设置为provider(默认系统已经提供,不将二方库包内部依赖的jar包与对接方的项目耦合),可是不乏会出现对接方无添加过相关依赖的状况,所以须要添加符合对接方系统版本的依赖。接下来,将以一个springboot引入spring-kafka的案例来理解如何找到合适的spring-kafka版本。框架
假设这么一个场景:我开发的二方库包使用到的技术栈是springboot,内部开发的其中一个功能须要依赖spring-kafka的三方库。众所周知,springboot为咱们提供了及其温馨的开发环境,当咱们引入springboot框架后,它内部已经定义了符合当前版本的全部三方库依赖。所以,假设咱们要引入spring-kafka模块,只须要在pom.xml文件中添加以下坐标便可:maven
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!-- 只须要添加以下坐标便可,不须要指定版本 --> <dependencies> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> </dependencies>
在上述引入spring-kafka 模块时,咱们没有指定version也可使用。这是由于spring-boot-starter-parent内部的dependencyManagement中定义了spring-kafka的依赖,做为子模块,只须要引入便可,版本号会默认继承父工程中的定义。若是对接方使用的是springboot 1.4.1.RELEASE版本,这个时候,再使用一样的方式来引入spring-kafka的话,你会发现,maven找不到spring-kafka的版本:分布式
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!-- 只须要添加以下坐标便可,不须要指定版本 --> <dependencies> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> </dependencies>
其大体的缘由就是:在spring-boot-starter-parent中内部并无依赖过spring-kafka,所以没法继承父类定义的版本,最终maven会提示找不到对应的版本。对接方一直以springboot 1.4.1.RELEASE版本正常开发,不可能为了集成你的二方库而升级springboot版本吧?所以,咱们须要为对接方找到合适的spring-kafka版本。ide
另一种作法就是:参考此连接https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/。在此连接中,是springboot的全部版本的依赖,如今咱们要看1.4.1.RELEASE版本的springboot内部依赖了哪些类库,咱们能够这么定位:spring-boot
定位版本idea
查看依赖pom文件spa
善于搜索(搜索spring-kafka)
能够看到,在springboot 1.4.1.RELEASE版本中内部并无依赖spring-kafka。此时该怎么办呢?将springboot版本升级,继续日后搜索,最终你会发现,在1.5.0.RELEASE版本中内部开始依赖了spring-kafka。所以,咱们能够尝试,在maven中引入查找出来的版本1.1.2.RELEASE
对应的pom.xml文件为
<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>1.1.2.RELEASE</version> </dependency>
在这种场景下,引入**1.1.2.RELEASE**版本能够解决问题,对接方的系统也能正常工做。 也许这种方式在其余场景不适用,但这确实是一种方式,咱们能够经过https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/连接找到每一个springboot版本内部依赖的三方库,这比咱们在idea中修改版本号再下载对应的版本方便的多。