锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 默认分类
  3. 关于项目使用组件版本选择的思考

关于项目使用组件版本选择的思考

0
  • 默认分类
  • 发布于 2024-09-24
  • 12 次阅读
黄健
黄健

在《项目中怎样做技术选型》中,我介绍了技术选型的一些思考。一旦选定了用什么技术,还涉及到版本的选择。版本不是越高越好,也不是用的越多越好,涉及很多因素。今天从具体实例入手来聊一聊版本选择的问题。

实例一 servlet版本

我最近在带一个新项目,因为搭建环境的时候,选择的版本比较新。下游是运行了好多年的老项目,版本相对老一些。其中servlet版本,新项目使用4.0.1版本,它在处理httpHeader时全转成了小写。下游使用3.1.0版本,它是按照原来的大小写原样透传的。这个问题不难处理,下游要兼容一下,做小写转换后再处理。

问题是由此引起的思考:新项目很多的版本比较新,是否是最合适的呢?这个问题我没有马上给出结论。而是说这个是个重要不紧急的事情,并不会阻塞开发进度,所以先保持现状不动,我过节有时间好好调研一下再决定。

这是新项目中的使用的一些jar包:

这是老项目中使用的一些jar包:

欢迎大家指出使用版本的问题,帮助我们保持系统稳定性。

上面总共涉及三个servlet版本:

servlet-api---2.5(实际没有用)

javax.servlet-api---3.1.0

javax.servlet-api---4.0.1

分别进行调研结果如下。

servlet-api---2.5

支持配置文件形式注册servlet、listener、filter等

javax.servlet-api---3.1.0

同时支持注解形式注入

同时支持动态注入

支持扩展插件

javax.servlet-api---4.0.1

支持从HTTP请求推送生成器等新特性

结论

因为实际我们这个项目用javax.servlet-api只是要获取http请求信息,别的都用不到。所以更合适使用线上稳定运行的版本3.1.0。

实例二 spring-boot版本

我们新项目中spring-boot的版本用的是2.3.2.RELEASE。这个也高于目前项目中使用的2.1.*的版本。我也调研了一下官网。

2.1.x版本已经在19年停止维护,商业支持(商业支持是要收费的,但是如果发现重大bug问题会公开)也在21年初停止了。如果继续使用这个版本,一旦有问题,得不到官方支持,不建议使用。

2.3.x也已经在去年停止维护,商业支持会支持到今年8月份。这表明2.3.x是一个很成熟的版本了。相比而言,虽然免费维护上已经不再支持,但是看下面:

上面可以看到2.3.x的版本官方还是建议使用的。

那在2.3.x中到底使用哪个版本呢?官网中GA(正式版本)建议的是2.3.12.RELEASE。先看一下,各个版本的变更主要变更了什么。

通过调研,变更主要是两项:

1>bug修复

2>Spring Framework等框架的版本升级

bug修复

Spring Boot 2.3.2 发布,解决 Too many open files 导致的应用宕机问题。

Spring Boot 2.3.6 也是一个重要的fix bug版本

  • 修复配置元数据注解处理器可能会对布尔属性使用错误访问器的问题 #24058

  • 使用 Tomcat 时,当 Spring Boot 的等价属性 (equivalent property) 没有设置,通过 javax.net.ssl 系统属性设置的密钥和信任存储密码会被 null 覆盖 #24052

  • @DataJpaTest无法将 H2 和 schema.sql 以及 spring.datasource.schema-username 一起使用 #24023

  • 当 Quartz 数据源不是主要数据源时,JdbcStoreTypeConfiguration 会选择主要数据源的事务 #24014

  • 修复 TestTypeExcludeFilter 没有实现其超类所需要的 hashCode 和 equals #24012

  • 自动配置不应使用@PostConstruct,因为在没有依赖 jakarta-annotation-api 的情况下,它在 Java 11+ 上是被忽略的 #24009

  • 如果配置文件包含一个隐藏的路径元素,则不再加载 #23983

  • 当调用 spring-boot-loader 的 JarFileWrapper.stream() 时,出现 "java.lang.IllegalStateException: zip file closed" #23821

Spring Boot 2.3.9 BUG修复:

  • 在通过jOOQ #25279访问数据库之前,由Flyway或Liquibase执行的迁移可能尚未完成。

  • Hibernate的新的hibernate-micrometer模块的依赖性管理丢失了#25277

  • DatabaseDriver无法正确检测到Amazon Redshift #25265

  • 如果将bean定义为ConnectionFactory #25138,则缺少RabbitMQ指标

  • 使用JPA延迟存储库时,子上下文的ContextRefreshedEvent可能导致死锁#24966

  • Spring Data Solr支持未标记为已弃用 #24942

  • 在MetricsClientHttpRequestInterceptor中记录指标时失败可能会干扰RestTemplate的主要行为#24753

  • WebMvcTest和WebFluxTest忽略用户提供的Thymeleaf IDialect bean #24149

Spring Framework等框架的版本升级

我们之前线上有用spring boot 2.1.x的版本,对应spring的5.1.x。spring boot 2.3.x的版本对应的主要是spring 5.2.x。看官网怎么说:

5.2.x版本这几年刚刚停止维护,商业维护还有近两年的时间。

官方推荐学习的正式版本除了最新版外,就是5.2.19.RELEASE。

spring boot除了spring framework还有一个重要组成netty。官网有介绍2.3.12.RELEASE对应的netty版本是netty4。目前公司已经在推升级组件,其中就涉及netty使用的netty4,与公司要求相符。

另外,我查了spring boot 2.3.x明确表示提供对jdk8及以上的支持,并且在jdk8上有全面的测试。

结论

建议采用 spring boot 2.3.12.RELEASE 版本。

因为2.3.x版本已经非常稳定,而2.3的小版本更新基本上都是在修复bug。而且修复的是linux交互、死锁等相对底层bug。其依赖版本也符合公司要求。

原文链接:https://mp.weixin.qq.com/s/erSu5cAxbkaOUYcfWk44sw

标签: #知识库 257
相关文章
最全的办公楼智能化解决方案

最全的办公楼智能化解决方案 2024-10-16 08:40

办公楼综合体智能化如何建设?有哪些系统?近几年,办公楼智能化的项目越来越多,不少项目经理都参与其它,同事办公楼综合体也是弱电系统涉及的最多的项目之一,本期我们一起来看下,最全的办公楼项目智能化设计方案。

规范标准查询、下载网站 2024-10-12 16:41

我们在工作中经常需要用到各种各样的规范标准,这里给大家介绍一些免费查询和下载规范的网站,个人亲测可用。 标准查找查新网站 工标网: http://www.csres.com/ 中国国家标准化管理委员会:http://openstd.samr.gov.cn/bzgk/gb/index 全国标准信息公共

【计算机网络】网络层协议解析 2024-10-08 11:24

网络层的两种服务 IPv4 * 分类编址 划分子网 无分类地址 IPv4地址应用 IP数据报的发送和转发过程 * 主机发送IP数据报 路由器转发IP数据报 IPv4数据报首部格式 ICMP网际控制报文协议 虚拟专用网VPN与

FFmpeg教程(超级详细版) 2024-10-08 11:24

一、参考资料 通过ffmpeg把图片转换成视频 FFmpeg命令(一)、使用filter_complex命令拼接视频 FFmpeg 视频处理入门教程给新手的 20 多个 FFmpeg 命令示例 FFmpeg命令行转码

计算机网络:物理层 —— 数据的传输方式 2024-10-08 11:24

文章目录 * 传输方式 * 串行传输 * 串行传输方式 特点 应用 并行传输 * 特点 应用 网卡的串/并转换 同步传输 * 同步时钟频率的误差问题 特点 应用<

授权码机制 V2.1 2024-10-07 10:26

大家好,我是机灵鹤。 根据读者朋友们反馈的问题和建议,对 授权码 V2.0 版本做了一些优化。 优化内容主要解决了以下几个问题: 优化了授权机制中的时间校验逻辑,避免用户通过回调本地时间来绕过授权机制的问题。 封装和简化了授权接口,开发者可以更方便地接入到自己的程序中。

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.