Enterprise 中级

用轻量级 CDI bean 替代重量级 EJB,实现依赖注入和业务逻辑。

✕ Java EE
@Stateless
public class OrderEJB {
    @EJB
    private InventoryEJB inventory;

    public void placeOrder(Order order) {
        // container-managed transaction
        inventory.reserve(order.getItem());
    }
}
✓ Jakarta EE 8+
@ApplicationScoped
public class OrderService {
    @Inject
    private InventoryService inventory;

    @Transactional
    public void placeOrder(Order order) {
        inventory.reserve(order.getItem());
    }
}
发现此代码有问题? 告诉我们。
🪶

轻量级

CDI bean 是普通 Java 类,无需 EJB 特定接口或描述符。

🧪

更易测试

普通 Java 对象,无需 EJB 容器即可进行单元测试。

🔧

现代标准

CDI 是 Jakarta EE 的推荐注入机制,持续演进。

旧方式
EJB
现代方式
CDI Bean
自 JDK
11
难度
中级
EJB 与 CDI
可用

自 Jakarta EE 8 / Java 11 起广泛可用

CDI(上下文和依赖注入)提供与 EJB 相同的依赖注入和生命周期管理,无需 EJB 特定接口或描述符。CDI bean 是普通 Java 类,容器负责其余工作。

分享 𝕏 🦋 in