请求解释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
相关产品推荐
相关产品推荐

