Apache DeltaSpike 2.0.1 介绍与选型指南

Apache DeltaSpike 2.0.1 认知篇:可移植 CDI 扩展套件的定位、核心模块、官方快速上手示例与退役背景下的选型建议,信息基于官方发布页与文档联网溯源(查询日期 2026-10-18)。

Apache DeltaSpikeApache DeltaSpike2026/10/18

Apache DeltaSpike 2.0.1 介绍与选型指南

目标:本篇为 A1 认知篇,基于 Apache 官方下载目录、Maven Central、GitHub 官方仓库与 ASF 董事会纪要联网溯源整理(查询日期 2026-10-18),不涉及本地安装实测;本地安装实测属 B1 安装指南职责。

一、信息基准

1.1 查询日期与版本依据

项目内容
查询日期2026-10-18
本次介绍版本Apache DeltaSpike 2.0.1(官方最新稳定版)
版本依据ASF 官方下载目录 downloads.apache.org/deltaspike/ 现存 1.9.6/ 与 2.0.1/ 两个版本线;Maven Central 元数据 org.apache.deltaspike.distribution:distribution-full 最新版本为 2.0.1(发布时间戳 2025-08-07)
维护线说明2.0.x 线面向 jakarta.* 命名空间;1.9.x 线面向 javax.* 命名空间,处于维护状态(官方下载页两线并存)

1.2 项目生命周期警示(如实标注)

ASF 董事会纪要显示 DeltaSpike 已进入退役流程:2025-04-16 纪要记录委员会决定"为 DeltaSpike 推进 Attic 提案"(彼时 PMC 联系成员征询无回复);2025-07-16 纪要记载项目已就迁入 Attic 进行投票。截至查询日 2026-10-18:Attic 官方站点未收录 DeltaSpike 页面、项目主页 deltaspike.apache.org 仍在线、projects.apache.org 仍保留项目记录、GitHub 仓库未标记归档,即退役已决议、归档尚未完成,社区近乎停滞(来源:apache.org 董事会纪要 2025 年 4 月/7 月卷,查询日期 2026-10-18)。

1.3 官方来源清单

来源URL
项目主页https://deltaspike.apache.org/
官方下载https://deltaspike.apache.org/download.html 、https://downloads.apache.org/deltaspike/
官方文档(Data 模块)https://deltaspike.apache.org/documentation/data.html
ASF 官方项目档案https://projects.apache.org/project.html?deltaspike
ASF 董事会纪要(2025-04/2025-07)https://www.apache.org/foundation/records/minutes/
GitHub 官方同步仓库https://github.com/apache/deltaspike (只读同步,无 Release 发布)
Maven Centralhttps://central.sonatype.com/ (groupId: org.apache.deltaspike)

二、软件概述

本文介绍 Apache DeltaSpike 2.0.1(下文简称 DeltaSpike)。DeltaSpike 是一组可移植的 CDI(Contexts & Dependency Injection)扩展套件,目标是为 Java 应用开发者补齐 CDI 规范之外的高频通用能力:类型安全的消息与国际化、组件级配置、程序化 Bean 查找、异常处理、仓库(Repository)模式数据访问等。项目 2014 年获 Duke's Choice Award,长期作为 Java EE / Jakarta EE 应用中"规范内再做薄封装"的事实选项之一(来源:deltaspike.apache.org 首页与项目介绍页,查询日期 2026-10-18)。

  • 许可:Apache License 2.0。
  • 维护方:Apache Software Foundation(ASF 顶级项目,当前处于退役流程中,见 1.2 节)。
  • 形态:纯 Java 库(JAR 依赖,无独立进程),随应用一同打包部署。
  • 生态位:运行在任意 CDI 实现(Apache OpenWebBeans、JBoss Weld)之上,可在 Apache Tomcat/TomEE、WildFly、GlassFish、Liberty、WebLogic 等环境使用(官网明示的测试矩阵)。

三、核心架构与核心概念

3.1 分层结构

DeltaSpike 没有服务进程,其"架构"体现为模块化的 JAR 分层:

层次内容
CDI 实现层OpenWebBeans 或 Weld,提供 CDI 运行时(CDI 规范本体)
DeltaSpike Core组件配置(@ConfigProperty 类配置注入)、类型安全消息与 i18n、BeanProvider 程序化 Bean 查找、异常处理(@ExceptionHandler)、项目阶段(ProjectStage)
DeltaSpike 模块层Data(仓库模式)、JPA(声明式事务等)、Bean Validation、Security(@SecurityBindingType 注解式授权)、Servlet、Test Control(CDI 测试引导)等
应用层业务代码通过依赖注入消费上述扩展,无侵入

3.2 核心概念

  • 可移植性(Portable):所有扩展只依赖 CDI SPI,不绑定某一实现/服务器,这是项目名称的由来,也是它与一般"服务器私有扩展"的分界。
  • CDI 扩展(Portable Extension):遵循 jakarta.enterprise.inject.spi.Extension 机制,在 CDI 启动期注册/改写 Bean 元数据,开发者侧通常只感知注解与接口。
  • 模块(Module):Core 之外按能力域拆分为多个可选依赖,按需引入,不强制全家桶。
  • 仓库模式(Repository Pattern):Data 模块允许只写接口、由 CDI 扩展在运行期生成实现,方法名派生查询或注解声明 JPQL。

四、功能特性

以下特性均可在官方文档对应模块页查证(deltaspike.apache.org/documentation,查询日期 2026-10-18):

模块代表能力
Core配置注入、类型安全 i18n 消息、动态 Bean 查找(BeanProvider)、全局异常处理、ProjectStage 环境区分
Data接口式仓库、方法名派生查询、@Query 注解 JPQL/命名查询、QueryResult 流式分页
JPA事务模板与声明式事务辅助、扩展的 EntityManager 注入
Bean Validation方法级校验与 CDI 集成
Security注解式访问控制(自定义 @SecurityBindingType)
ServletServlet 环境下 CDI 会话/请求对象桥接
Test Control在 JUnit 中直接引导 CDI 应用上下文做集成测试
Scheduler / Jobs 等定时任务等周边能力模块
  • 双命名空间并行:2.0.x 为 jakarta.*(Jakarta EE 9+ / CDI 4 起步),1.9.x 为 javax.*(Java EE 8 / CDI 2),老应用可走 1.9.6,新应用走 2.0.1。
  • Java SE 可用:提供 Java SE 引导能力,可配合 OpenWebBeans/Weld 在无 Java EE 服务器场景使用。

五、快速上手(引自官方文档,不本地实测)

5.1 引入 Core 与 Data 模块(Maven)

按官方文档"Configure DeltaSpike in Your Projects"的依赖坐标方式(groupId org.apache.deltaspike.*),在 pom.xml 声明(版本取本文基准 2.0.1):

<dependency>
    <groupId>org.apache.deltaspike.core</groupId>
    <artifactId>deltaspike-core-api</artifactId>
    <version>2.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.deltaspike.modules</groupId>
    <artifactId>deltaspike-data-module-api</artifactId>
    <version>2.0.1</version>
</dependency>

官方来源:https://deltaspike.apache.org/documentation/data.html (Project Setup 一节,查询日期 2026-10-18)

5.2 Data 模块仓库接口(官方示例原文)

官方 Data 模块文档给出的典型用法如下(原文引自上述链接):

@Repository
public interface PersonRepository extends EntityRepository<Person, Long>
{
    List<Person> findByAgeBetweenAndGender(int minAge, int maxAge, Gender gender);

    @Query("select p from Person p where p.ssn = ?1")
    Person findBySSN(String ssn);

    @Query(named=Person.BY_FULL_NAME)
    Person findByFullName(String firstName, String lastName);
}

官方文档说明:三种场景分别对应"方法名与参数直接翻译成查询""自动执行给定 JPQL 字符串""自动执行命名查询",方法实现由 CDI 扩展自动生成,客户端只需声明对接口的依赖(原文见 https://deltaspike.apache.org/documentation/data.html ,查询日期 2026-10-18)。

六、适用场景与限制

6.1 适用场景

  • 存量 Java EE / Jakarta EE 单体应用:已在用 CDI,想补齐配置注入、i18n、异常处理等通用件而不引入整套框架。
  • 老版本(Java EE 8 / javax 命名空间)应用:1.9.6 维护线是少数仍可依赖的现成 CDI 扩展集之一。
  • 需要"接口即仓库"的轻量数据访问层,且不希望绑定 Spring 生态。

6.2 限制与风险

  • 项目处于退役流程(1.2 节):无路线图预期、bug 修复与安全响应基本停滞;ASF Attic 项目默认不再发布安全补丁,选型方需自行评估合规与安全风险。
  • 2.0.1 之后无发布计划可循;Maven Central 最近一次发布为 2025-08-07。
  • 社区规模小(官方 GitHub 同步仓库 154 stars,最后推送 2026-07-21,查询日期 2026-10-18)。
  • 不提供新框架级的开箱能力(如原生响应式、云原生集成),定位始终是"CDI 之上的薄扩展"。

七、同类选型对比

对比维度:许可、社区活跃度(GitHub stars + 最近发版)、版本节奏、兼容矩阵。数据均为 GitHub API 与官方发布页实查,查询日期 2026-10-18。

项目定位许可GitHub stars最近发版(2026-10-18 实查)兼容矩阵
Apache DeltaSpike 2.0.1CDI 可移植扩展套件Apache-2.0154(apache/deltaspike)2.0.1(2025-08-07,Maven Central 时间戳)CDI 实现:OpenWebBeans/Weld;命名空间:jakarta(2.x)/javax(1.9.x);退役流程中
Spring Data JPA 4.0.7仓库模式数据访问(Spring 生态)Apache-2.03291(spring-projects/spring-data-jpa)4.0.7(2026-08-21)Spring Framework 生态;JPA 3.x;月度发版节奏
Quarkus 3.40.1云原生 Java 全栈框架(内建 CDI 子集 ArC)Apache-2.015946(quarkusio/quarkus)3.40.1(2026-09-30)Jakarta EE 10+ 特性子集、GraalVM 原生编译;高频发版
Weld 7.0.0.FinalJakarta CDI 规范参考实现Apache-2.0418(weld/core)7.0.0.Final(2026-09-25)Jakarta CDI 实现本体(不提供 DeltaSpike 式功能扩展)

选型建议:新项目不建议再引入 DeltaSpike——功能上 Spring Data JPA(仓库模式)或 Quarkus(CDI 子集 + 全栈能力)覆盖面更广且高度活跃;仅当存量 Java EE 8/javax 应用需要零改造补齐 CDI 扩展时,才在"不再有安全维护"的前提下评估 1.9.6/2.0.1。

八、参考链接