You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求解释Jersey Tomcat CDI相关依赖及pom.xml配置作用

搭建支持DI的Jersey应用实战分享

折腾了好多次,我总算把支持依赖注入(DI)的Jersey应用给搭起来了!下面是我用到的pom.xml核心依赖配置,顺便给大家唠唠每个依赖的作用:

核心pom.xml依赖配置

<dependencies>
    <!-- CDI API:依赖注入的标准API -->
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>2.0.SP1</version>
        <scope>provided</scope>
    </dependency>
    <!-- Weld Servlet实现:Servlet环境下的CDI容器实现 -->
    <dependency>
        <groupId>org.jboss.weld.servlet</groupId>
        <artifactId>weld-servlet-shaded</artifactId>
        <version>3.1.9.Final</version>
    </dependency>
    <!-- Jersey JSON与Jackson集成:处理Java对象和JSON的互相转换 -->
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>2.35</version>
    </dependency>
    <!-- Jersey Servlet容器:搭建Jersey应用的核心容器依赖 -->
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>2.35</version>
    </dependency>
    <!-- Jersey Server核心:Jersey服务端的核心功能依赖 -->
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>2.35</version>
    </dependency>
    <!-- HK2:Oracle提供的DI实现,可作为CDI的替代方案 -->
    <dependency>
        <groupId>org.glassfish.jersey.inject</groupId>
        <artifactId>jersey-hk2</artifactId>
        <version>2.35</version>
    </dependency>
    <!-- Jersey CDI集成:让Jersey能够和CDI容器协同工作,启用CDI支持 -->
    <dependency>
        <groupId>org.glassfish.jersey.ext.cdi</groupId>
        <artifactId>jersey-cdi1x-servlet</artifactId>
        <version>2.35</version>
    </dependency>
</dependencies>

各依赖作用拆解

  • cdi-api:这是依赖注入的标准API,定义了DI的核心规范,所有CDI实现都得遵循这套接口。
  • weld-servlet-shaded:JBoss Weld的Servlet专属打包版本,是CDI规范在Servlet容器里的具体实现,管着对象的生命周期和依赖注入的具体逻辑。
  • jersey-media-json-jackson:专门用来搞定Java对象和JSON格式的互相转换,让Jersey接口能轻松返回JSON响应或者接收JSON请求体。
  • jersey-container-servlet + jersey-server:这俩是搭建Jersey应用的基础核心,前者负责把Jersey集成到Servlet容器里,后者提供了Jersey服务端的核心功能支持。
  • jersey-hk2:Oracle出的轻量级DI容器实现,是Jersey默认的DI方案,也能当CDI的替代选择,适合不需要完整CDI功能的场景。
  • jersey-cdi1x-servlet:这个是关键的集成桥梁,它能让Jersey和CDI容器(比如上面的Weld)协同工作,真正启用Jersey应用里的CDI依赖注入功能。

内容的提问来源于stack exchange,提问作者Jan Bodnar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:33:46