源的脚手架项目mall-tiny 升级mall项目

前不仅,SpringBoot 2.7.0 版本发布了,我也是第一时间把之前开源的脚手架项目mall-tiny 给升级支持了!有的小伙伴提出把mall项目也升级下,于是我最近抽空把它给升级了!不仅是支持了最新版SpringBoot,使用到的技术栈基本都升级到最新了!今天分享下升级内容和升级过程中遇到的一些问题,大家可以参考下!

技术栈升级

mall项目采用现阶主流技术实现,这些主流技术基本都升级了目前最新稳定版,具体升级内容大家可以参考下表。

Mall电商实战项目全面升级!支持最新版SpringBoot,干掉循环依赖
Mall电商实战项目全面升级!支持最新版SpringBoot,干掉循环依赖

升级过程

升级过程中遇到一些问题,这里整理了下,给想要升级这套技术栈的小伙伴一个参考!

支持SpringBoot 2.7.0

看了下之前使用的2.3.0版本,一年前就End of Support了,升级2.7.0还是很有必要的。

Mall电商实战项目全面升级!支持最新版SpringBoot,干掉循环依赖

升级2.7.0版本不仅是改个版本号就行了,由于SpringBoot2.6.x版本开始默认禁用了循环依赖,如果你的项目中循环依赖太多的话,只能使用如下配置开启了。

spring:
  main:
    allow-circular-references: true

既然官方都禁止使用了,我们还是从源头上解决循环依赖的好,如何优雅地解决循环依赖问题具体可以参考mall-tiny升级支持SpringBoot 2.7.0 中的解决循环依赖部分,mall项目也使用了这种优雅的方式。

Swagger改用Starter

之前项目中是直接使用Swagger依赖来集成的,并没有用Starter,这次改用了它。

<!--Swagger-UI API文档生产工具-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

在升级SpringBoot 2.6.x版本的时候,其实Swagger就有一定的兼容性问题,需要在配置中添加BeanPostProcessor这个Bean,具体可以参考升级 SpringBoot 2.6.x 版本后,Swagger 没法用了。

SpringSecurity用法升级

在升级SpringBoot2.7.0版本后,SpringSecurity中有个重要的类被弃用了,那就是一直作为配置类使用的WebSecurityConfigurerAdapter。

Mall电商实战项目全面升级!支持最新版SpringBoot,干掉循环依赖

新用法非常简单,无需再继承WebSecurityConfigurerAdapter,只需直接声明配置类,再配置一个生成SecurityFilterChainBean的方法,把原来的HttpSecurity配置移动到该方法中即可,mall项目也采用了这种新用法。

/**
 * SpringSecurity 5.4.x以上新用法配置
 * 为避免循环依赖,仅用于配置HttpSecurity
 * Created by macro on 2022/5/19.
 */
@Configuration
public class SecurityConfig {

    @Bean
    SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
        //省略HttpSecurity的配置
        return httpSecurity.build();
    }

}

最新版Spring Security用法具体可以参考Spring Security 最新用法 。

MyBatis升级

在升级MyBatis的过程中,也升级了MySQL的驱动版本,从8.0.16升级到了8.0.29。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.29</version>
</dependency>

之前有小伙伴提出升级到该版本后,在Linux上无法连接到MySQL数据库,其实是因为默认使用了SSL连接导致的,在配置文件中添加useSSL=false配置即可解决。

spring:
  datasource:
    url: jdbc:mysql://db:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
    username: reader
    password: 123456

ELK日志收集系统升级

其实每次升级SpringBoot版本,如果集成了Elasticsearch都基本要升级ES,然后整套ELK组件都得升级,这次全部升级到了7.17.3版本。

为什么升级该版本呢?因为SpringBoot2.7.0使用的Java SDK默认兼容该版本。

Mall电商实战项目全面升级!支持最新版SpringBoot,干掉循环依赖

不得不说ES的Java SDK各版本兼容性很差,如果还是使用之前的7.6.2版本的话,运行mall-search中的单元测试代码会出现如下问题。很多小伙伴使用ES出现一些稀奇古怪的问题,大概率是版本兼容性问题。

Mall电商实战项目全面升级!支持最新版SpringBoot,干掉循环依赖

看一眼升级后的日志收集系统,Kibana的界面更现代化了!

Mall电商实战项目全面升级!支持最新版SpringBoot,干掉循环依赖

MongoDB升级

MongoDB升级5.0用法基本和之前一致,但是在部署到Docker环境时发现,MongoDB5.0居然需要特定CPU支持,只得改用4.x版本了。

Mall电商实战项目全面升级!支持最新版SpringBoot,干掉循环依赖

镜像打包插件改用fabric8io

之前一直使用的是spotify出品的docker-maven-plugin,用于打包应用Docker镜像并上传到服务器。上了下官网,这个插件基本上是不维护了,之前也有小伙伴反馈使用有问题。

Mall电商实战项目全面升级!支持最新版SpringBoot,干掉循环依赖

现在改用了fabric8出品的docker-maven-plugin,功能更强大,更新也比较及时。

Mall电商实战项目全面升级!支持最新版SpringBoot,干掉循环依赖

虽然插件换了,但用法还是一样的,配置好docker远程访问地址后直接双击package命令就可以实现一键打包上传应用镜像了。

Mall电商实战项目全面升级!支持最新版SpringBoot,干掉循环依赖

部署文档更新

项目的部署文档也同步更新了,具体可以参考以下链接。

  • mall在Windows环境下的部署

https://www.macrozheng.com/mall/deploy/mall_deploy_windows.html

  • mall在Linux环境下的部署(基于Docker容器)

https://www.macrozheng.com/mall/deploy/mall_deploy_docker.html

  • mall在Linux环境下的部署(基于Docker Compose)

https://www.macrozheng.com/mall/deploy/mall_deploy_docker_compose.html

总结

今天分享了一下mall项目的升级内容和升级过程中遇到的一些问题,不得不说,SpringBoot确实是个很棒的框架,跨了几个大版本升级到2.7.0,代码几乎无需改动。SpringBoot 2.7 版本很可能成为一个钉子户版本,因为从SpringBoot 3.0 开始最低要求Java 17了,大家可以尝试下升级到该版本!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1219982080@qq.com 举报,一经查实,本站将立刻删除。

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-07-01 13:37
下一篇 2022-07-01 13:40

相关推荐

  • 斗鱼直播电商,内容带货主播人才缺失主播跳槽

    今年3月,Aggro电竞因为一篇记录事实的稿件被斗鱼起诉。斗鱼在诉状中称Aggro电竞的稿件让外界产生了其“人才凋零”的负面评价,而事实上,Aggro电竞文中所提到的主播数据均为小葫芦、头榜数据等公开可查的数据。 而斗鱼是否“人才凋零”,其实还有更多的事实可以论证。 内容带货主播,斗鱼人才缺失 2020年4月,中国消费者协会发布《直播电商购物消费者满意度在线…

    2022-06-27
    00
  • app运营推广总结以下几个技巧-2022已更新(/动态)

    随着移动互联网的发展,相信不少企业都已经进行了APP开发,然而在开发好APP以后,必然就需要对其进行推广引流。但许多企业只想到如何去开发APP应用,却没有考虑到后续的推广引流,故此APP在开发出来以后,却没有取得显著的效果,导致企业无法获利。因此只有将其推广出去,方能使APP获得更多流量,取得更好的效果。 任何APP应用在上线之后都需要进行推广工作,目的就是…

    2022-09-17
    00
  • 什么是淘宝动态评分?于店铺有什么影响_2022已更新(今日/必读)

    什么是淘宝店铺的动态评分? 所谓淘宝店铺动态评分就是对于本店商品的质量、服务态度、物流速度等方面的评分指标。每项店铺评分均为动态指标,系此前连续90天内所有评分的算术平均值(不包括默认评价)。 温馨提示:每个自然月,相同用户、商家之间存在多次交易的,店铺评分仅计取前3次。 店铺评分一旦做出,就无法修改。 也就是每次客户购买商品后,店铺评价里面的几项内容。而动…

    2022-08-22
    00
  • 遇到淘宝流量突然下降因素总结、找出原因并对症下药

    相信大家日常都有查看店铺数据的习惯,当店铺流量数据开始出现下滑时,大家总会不由得心里开始慌张,店铺这究竟是出现什么问题了。当流量下滑时,咱们先别着急慌张,找出原因并对症下药解决问题,争取将流量挽回。 一、市场因素 1、整体大盘走势影响 这种原因导致的店铺流量下滑是常见的且有周期规律的,这是因为咱们很多类目的商品会受到淡旺季原因或者特殊市场环境因素影响,造成整…

    2022-08-05
    00
  • 常用的手机端海报尺寸是多少,平面设计

    一、什么是海报? 海报这一名称,最早起源于上海,是一种宣传方式。旧时,海报是用于戏剧、电影等演出,活动的招帖。上海的人通常把职业性的戏剧演出称为“海”,而把从事职业性戏剧的表演称为“下海”。作为剧目演出信息的具有宣传性的招来顾客性的张贴物,也许是因为这个,人们便把它叫做“海报”。正规的海报中通常包括活动的性质、主办单位、时间、地点等内容,多用于影视剧和新品宣…

    2022-03-17
    00

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

13515318674

在线咨询: QQ交谈

邮件:1219982080@qq.com