SpringCloud Alibaba微服务实战四

Easter79
• 阅读 692

SpringCloud Alibaba微服务实战四

本篇作为SpringCloud Alibaba微服务实战系列的第四篇,我们对之前的微服务框架进行优化,通过Maven bom机制管理所有组件的版本。

SpringCloud Alibaba微服务实战四

BOM 简介

BOM(Bill of Materials)是由Maven提供的功能,它通过定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包,且无需再指定版本号。BOM的维护方负责版本升级,并保证BOM中定义的jar包版本之间的兼容性。

为什么要使用BOM

使用BOM除了可以方便使用者在声明依赖的客户端时不需要指定版本号外,最主要的原因是可以解决依赖冲突,防止你项目中出现NoSuchMethodError, ClassNotFoundException等不可控的异常。

项目改造

在SpringCloud项目体系中我们约定跟SpringCloud版本相关的用主pom文件进行版本控制,对于第三方组件或者公共模块的版本使用自定义的bom进行控制,接下来我们一步步对原有框架进行改造。

  • 建立cloud-bom模块 此模块很简单,只有一个pom文件,定义项目模块中所需要依赖的第三方组件和公共模块,完整的pom文件如下:

    4.0.0 com.jianzh5.cloud cloud-bom pom 1.0.0 <mybatis-plus.version>3.1.1</mybatis-plus.version> <mysql.version>5.1.47</mysql.version> <cloud-alibaba.version>1.0.0</cloud-alibaba.version> com.jianzh5.cloud cloud-common ${cloud-alibaba.version} com.jianzh5.cloud account-feign ${cloud-alibaba.version} com.jianzh5.cloud product-feign ${cloud-alibaba.version} mysql mysql-connector-java ${mysql.version} com.baomidou mybatis-plus-boot-starter ${mybatis-plus.version} nexus-aliyun Nexus aliyun http://maven.aliyun.com/nexus/content/groups/public

注意,这个模块不要再定义 依赖了,否则在主pom文件中引入bom后项目启动会报循环依赖的异常(死循环) ,具体错误如下所示:

The build could not read 1 project -> [Help 1]    The project com.jianzh5.cloud:cloud-aliaba:1.0.0 (D:\project_jianzh5\cloud-aliaba\pom.xml) has 1 error    The dependencies of type=pom and with scope=import form a cycle: com.jianzh5.cloud:cloud-bom:1.0.0 -> com.jianzh5.cloud:cloud-bom:1.0.0 @ com.jianzh5.cloud:cloud-bom:1.0.0To see the full stack trace of the errors, re-run Maven with the -e switch.Re-run Maven using the -X switch to enable full debug logging.For more information about the errors and possible solutions, please read the following articles:
  • 在主pom文件中引入bom模块的pom

    com.jianzh5.cloud cloud-bom 1.0.0 pom import

此段内容需要放在dependencyManagement中第一个位置

  • 去掉其他模块中引用组件的 <version>定义,如:

    com.jianzh5.cloud cloud-common

  • 改造完成后整体结构如下SpringCloud Alibaba微服务实战四

  • 改造完成后对原项目进行测试,保证不影响原有功能建议在项目初期就引入bom进行管理,后期改造会相对麻烦。

至此我们已经完成了项目的统一版本管理,那么本期的“SpringCloud Alibaba微服务实战四 - 版本管理”篇也就该结束啦,咱们下期有缘再见!

系列文章

  • SpringCloud Alibaba微服务实战一 - 基础环境准备

  • SpringCloud Alibaba微服务实战二 - 服务注册

  • SpringCloud Alibaba微服务实战三 - 服务调用

SpringCloud Alibaba微服务实战四

温馨提示

如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。

SpringCloud Alibaba微服务实战四

戳我留言

点击下方“阅读原文”查看更多

本文分享自微信公众号 - JAVA日知录(javadaily)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k