Dante Cloud
v4.0.3.0
一、Dante Cloud 4.X 新特性
[1] 基础依赖全面升级
- Dante Cloud 4.X 使用 JDK 版本已经全面升级至 25,充分发挥虚拟线程的能力
- Spring Boot 版本升级至 4.0.3
- Spring Cloud 版本升级至 2025.1.1
- Spring Cloud Alibaba 版本升级至 2025.1.0.0
- 全面迁移至 Jackson 3,提升序列化/反序列化性能与安全性
[2] 全新模块架构
- 基于 Spring Boot 4 “New Moduler Design” 体系,重构整个核心组件库模块,适配新体系下的模块划分和使用,进一步强化模块的内聚性和独立使用能力
- 工程 maven dependencies 体系,由原来“继承”模式变更为
import模式,增强工程的独立性以及模块引入的便捷性,避免在多工程场景下各个工程只能串行使用效率低下问题
[3] API 版本控制
- 新增 REST API 版本控制能力,支持请求头、请求路径和请求参数三种 API 版本设置模式,可通过配置修改。默认已开启基于请求头的版本控制。
- 新增支持带 API 版本的 REST 接口动态接口鉴权能力,接口权限实时在线变更,不同版本接口可独立设置不同权限
[4] 改进 gRPC 通信
- 使用 Spring gRPC 组件替换原有 net.devh grpc-srping-boot-starter,并扩展 gRPC 的动态服务发现能力,让 gRPC 与系统的融合更加成体系化
- 新增基于 Spring Security 的 gRPC 方法动态鉴权能力,与 REST 接口权限体系保持一致,让 gRPC 通信更加安全
[5] 安全防护增强
- 全新实现 PKI 证书管理模块,支持在线生成与管理,无需使用传统命令行方式生成和管理证书
- 系统基于 Spring Authorization Server 的授权服务器加密逻辑,全部修改为使用系统 PKI 模块生成证书
- 改造 Spring Boot Admin 监控服务,增加登陆认证保护。使用 Dante Cloud 系统自身提供的 OAuth2 / OIDC 作为 Spring Boot Admin 主要的登录模式
- 新增静态接口权限 Customizer 聚合模式,服务可根据实际依赖模块
按需、动态装配静态接口权限,减少静态权限的重复设置和不必要的解析,进一步提升接口鉴权效率 - 服务 Docker 镜像基础 JDK 修改为 liberica 加固镜像,以提升镜像整体安全性及性能
[6] OSS对象存储
- 原 Dante OSS 工程已经停止维护,使用 AWS S3 V2 权限实现 OSS 管理模块,并合并至核心组件库
- 支持在线生成与管理,基于 AWS S3 V2 API 能够提供的能力,全新实现前端对象存储管理功能
- 重构本地文件存储和远程文件存储多层文件管理逻辑,让代码逻辑更清晰、运行更稳定、配置修改,也更容易理解和维护。
[7] 前端功能改进
- 基于 Vuetify Material Design 3 蓝图风格以及 Vue 3 组合式 API,全新编写新版管理界面
- 采用 monorepo 模块化设计,原版前端(Quasar版)和前端新版(Vuetify版),共享通用化代码模块,提升代码维护的便捷性
- 前端菜单权限大幅调整,支持根据多角色动态获取菜单。
- 支持多类型动态菜单,个人页面菜单从静态化菜单变更为支持动态化配置管理
- 大幅提升前端代码 Tree shaking 能力和性能
- 前端组件库模块新增组件 Resolver 支持,方便 IDE 更好的识别组件及其定义
[8] 其它改进提升
- Dante Cloud 主工程也支持中央仓库和 Maven 私库发布,服务的开发和代码组织可以更灵活
- 使用更优雅及更合理的方式重构自定义 JPA 二级缓存实现,彻底解决需要修改 Hibernate 源代码的问题
- 优化平台和服务配置,按照 Servlet 和 Reactive 不同环境需求进行拆分,以增强不同运行环境配置的独立性
- 重构本地文件存储及服务间文件传输体系,简化代码逻辑,清晰化代码定位,便于理解和维护
- 重构基础 Service 和 Controller 定义,在原有 Spring Data 实体绑定基础上,支持 DTO 类型请求和响应实体。同时支持 Spring Data Page 和 Slice 两种分页场景
二、注意事项
- 因为全新架构了核心组件库中的模块,核心模块坐标已统一变更为 org.dromara.dante(企业版保持不变),建议全新检出代码,避免因模块结构调整导致冲突
- 数据库和 Nacos 配置等,也存在较多的变化,与之前版本无法兼容,要使用新版本建议重新建库和导入配置文件。
- 若通过 ZIP 方式导出代码,需注释 git-commit-id-maven-plugin,否则编译会因缺少 .git 文件夹报错。建议通过 Git 克隆代码以保留版本记录功能
v3.5.5.3
Dante Cloud v3.5.5.3 版本对 Dante Engine 核心组件库以及主工程做了大规模重构
“本次升级绝非简单的代码同步,而是一次从架构理念到实现方式的深度重构。企业版在生产环境中积累的最佳实践,对开源组件库进行了‘淬炼’:
- 结构上,我们重新划分了模块边界,使得 组件的内聚性大幅提升。每个组件的职责更加单一和明确,就像一个功能精湛的‘瑞士军刀’模块,开发者可以真正地像‘组装乐高’一样,按需引入所需功能,极大提升了使用的灵活性与项目的轻量化。
- 依赖上,我们极大地 降低了组件之间以及与第三方库的非必要耦合。这不仅减少了潜在的依赖冲突,使得与 Spring Boot 生态及其他主流依赖的集成更加平滑稳定,也让每个组件的‘独立使用’成为了可能。你现在可以轻松地将某个组件单独抽离,集成到任何基于 Spring Boot 的技术栈中。
- 规范上,我们确保所有组件的设计都 更严格地遵循 Spring Boot 的官方规范和习惯用法,特别是新版本 Spring Boot 新增加的用法。这意味着更低的学习成本、更熟悉的配置方式、以及更好的与 IDE 和 Spring Boot Actuator 等工具链的协同工作能力。
重要
- 因为代码结构出现了较大规模的变化,如果您未曾在原版基础上进行较多修改,那么建议重新检出工程代码学习和使用。如果有较多修改,建议新建一个工程重新检出代码,与现有代码对照修改
- 除了代码结构以外,Nacos 配置也同步进行了较大修改,建议新建一个命名空间,重新导入使用。
v3.5.3.0
Bootstrap 模式(即 Bootstrap.yml)是兼容性处理模式,已经是 Spring 官方不推荐的模式。
Spring Cloud Alibaba 自 2023.0.1.3 版本起改用了新的配置方式,其实本质就是不打算继续兼容 Bootstrap 模式,因此在 Bootstrap 模式下 SCA 会出现一些问题。
因此 Dante Cloud 自 v3.5.3.0 版本起,也改用 Spring Boot 的标准配置模式,将 bootstrap.yml 统一修改为 application.yml,并去除了对模块 spring-cloud-starter-bootstrap 的依赖。
v3.4.1.0
本版本为了适配 Spring Authorization Server 1.4.1,在系统中增加了两个 Token 的属性字段,以保持与 Spring Authorization Server 的一致性。
当您更新了最新的代码后启动服务,系统会自动在 oauth2_application 表中增加两个字段:bound_access_token 和 subject_dn。
subject_dn 字段不会对系统产生任何影响。但是由于系统使用的数据库组件会自动添加新的字段,不会同步设置已有信息的值,这就导致新增的另外的一个字段 bound_access_token(bool 类型)的值为 null。这就会导致系统登录时出现异常。
解决办法:
- 如果您已经更新了代码并且启动了服务,
oauth2_application表中会新增两个字段:bound_access_token和subject_dn - 打开
oauth2_application表,找到bound_access_token字段,将其值设置为 "false"。 - 清空 Redis 缓存,或者等待缓存失效后,再次尝试。
v3.4.0.0
已将 Spring Cloud Alibaba 版本回滚至 2023.0.1.2
v3.3.6.0
v3.3.6.0 版本将 Spring Cloud Alibaba 升级至 2023.0.1.3,这将会出现两个问题:
- 只能使用
spring.config.import方式读取配置 - Spring Boot 自身日志配置失效,无法在配置文件中,通过
logging.level.<logger-name>=<level>方式灵活控制日志显示和输出
