Vaadin 7 是否与 Spring Boot 2.x 兼容?

问题描述

我有一个旧的 Vaadin 7 应用程序,我正在尝试将 Spring Boot 版本从 1.5.22.RELEASE 升级到 2.0.9.RELEASE。我不断遇到错误。这甚至应该起作用吗?我找不到任何关于版本兼容性的文档。

编辑:

由于 Spring 版本之间的各种 API 更改,错误java.lang.NoClassDefFoundError: org/springframework/boot/bind/RelaxedPropertyResolver 类似。

用于 Vaadin 7 的官方 Vaadin Spring Boot add-on 1.2.x 分支似乎只支持 Spring Boot 1.5。当前 Vaadin 8 版本的附加组件的 3.x 分支显然适用于两者,但这些更改尚未向后移植到较旧的分支,并且较新的分支不适用于 Vaadin 7。应用 {{3}由于附加组件不兼容,我的项目本身并不能解决问题。

解决方法

不幸的是,Vaadin 7 只兼容 Spring Boot 1.5。如果你想使用 Spring Boot 2.x,你有三个选择:

  • 升级您的项目以使用 Vaadin 8(与 Spring Boot 1.5 和 2.x 兼容),有关详细信息,请参阅 migration guide。在大多数情况下,这在兼容性类的帮助下相当简单。首先进行 Vaadin 版本升级可能是一个好主意,并且只有在应用程序已经在 Vaadin 8 上运行之后才升级 Spring Boot 版本(这样可以更容易地找出如果有任何问题应该归咎于哪个升级)。但是,应该注意的是,Vaadin 8 的免费支持已于 2022 年 2 月结束,但商业扩展支持将在 10 年后提供。
  • 创建一个新的 Vaadin 14 项目(仅与 Spring Boot 2.x 兼容,start.vaadin.com 生成的入门应用默认基于 Spring Boot),购买包含 Multiplatform Runtime 的 Vaadin 订阅,它允许您可以在 Vaadin 14 中使用 Vaadin 7 类,并在 MPR 包装器的帮助下将旧视图插入到新项目中。请记住不要使用旧的 Vaadin 7 Spring 附加组件,而是使用通过 Flow Servlet 连接的新附加组件。此选项需要更多的初始工作(和订阅),但可以让您在以后继续将项目转换为纯 Vaadin 14 版本。
  • 将您的项目完全升级到 Vaadin 14(或更高版本,但这是目前最新的 LTS 版本)。 migration guide 来自 Vaadin 8,因此您可能需要查阅 Vaadin 7 到 Vaadin 8 迁移指南以及某些功能。这比从 Vaadin 7 到 Vaadin 8 的跳跃要大得多,因为在 Vaadin 8 之后重写了整个客户端处理,但让您可以立即访问更新的花里胡哨,您将获得更多年的免费支持,而从 Vaadin 14 升级到下一个 LTS 版本应该又是一个较小的步骤。