在 Jersey 2 使用 Spring 4

Jersey 提供对 Spring DI 的扩展。使得 Jersey 在使用 Spring bean 时 就像是 JAX-RS 的组件 (比如 资源和提供者) 并且允许 Spring 注入 Jersey 管理的组件中。比如:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import org.springframework.stereotype.Component;

@Component
@Path("/")
public class SomeResource {

    @Transactional
    @GET
    public void updateResource() {
        // ...
    }
}

详见《Jersey 2.x 用户指南》 Chapter 22. Spring DI 使用 Spring 注入

但官方在使用 Jersey Spring DI,只提供了对 Spring 3 的扩展 jersey-spring3 模块

<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-spring3</artifactId>
    <version>2.14</version>
</dependency>

但这并不是说,你不能使用 Spring 4,需要做如下调整:

<dependencies>

<!-- Jersey -->

<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-spring3</artifactId>
    <version>2.14</version>
    <exclusions>
        <exclusion>
            <artifactId>spring-context</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
        <exclusion>
            <artifactId>spring-beans</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
        <exclusion>
            <artifactId>spring-core</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
        <exclusion>
            <artifactId>spring-web</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
        <exclusion>
            <artifactId>jersey-server</artifactId>
            <groupId>org.glassfish.jersey.core</groupId>
        </exclusion>
        <exclusion>
            <artifactId>
                jersey-container-servlet-core
            </artifactId>
            <groupId>org.glassfish.jersey.containers</groupId>
        </exclusion>
        <exclusion>
            <artifactId>hk2</artifactId>
            <groupId>org.glassfish.hk2</groupId>
        </exclusion>
    </exclusions>
</dependency>

<!-- Spring 4 dependencies -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.1.3.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.1.3.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>4.1.3.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.1.3.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>4.1.3.RELEASE</version>
</dependency>

</dependencies>

详细实例可以参考:用 Jersey 2 和 Spring 4 构建 RESTful web service

时间: 2024-10-06 23:41:16

在 Jersey 2 使用 Spring 4的相关文章

用 Jersey 2 和 Spring 4 构建 RESTful web service

本文介绍了如何通过 Jersey 框架优美的在 Java 实现了 REST 的 API.CRUD 的 操作存储在 MySQL 中 1. 示例 1.1 为什么 Spring 可以对于 REST 有自己的实现(见 https://spring.io/guides/tutorials/rest/). 但本文展示的是用 "官方" 的 方法来实现 REST ,即使用 Jersey. 1.2 它是做什么的? 管理 资源. REST API 将允许创建.检索.更新和删除这样的资源. 1.3 架构及技

@autowire在非jersey服务类中不注入(spring+jersey_mybatis)

问题描述 @autowire在非jersey服务类中不注入(spring+jersey_mybatis) 使用@autowired可以在jersey的服务类中注入,但是在其它类中就无法注入,显示@autowired的对象为空. spring.xml如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/be

JAX-RS(基于Jersey) + Spring 4.x + MyBatis构建REST服务架构

0. 大背景 众所周知,REST架构已经成为现代服务端的趋势. 很多公司,已经采用REST作为App, H5以及其它客户端的服务端架构.   1. 什么是JAX-RS? JAX-RS是JAVA EE6 引入的一个新技术. JAX-RS即Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务. JAX-RS使用了Java SE5引入的Java标注来简化Web服务的客户端和服务端的开发和部署

Spring MVC与JAX-RS比较与分析

导言 过去几年,REST逐渐成为影响Web框架.Web协议与Web应用设计的重要概念. 现在有越来越多的公司希望能以简单而又贴合Web架构本身的方式公开Web API,因此REST变得越来越 重要也就不足为奇了.使用Ajax进行通信的富浏览器端也在朝这个目标不断迈进.这个架构原则提升了万 维网的可伸缩性,无论何种应用都能从该原则中受益无穷. JAX-RS(JSR 311)指的是Java API for RESTful Web Services,Roy Fielding也参与了JAX-RS的制 订

使用Jersey和Apache Tomcat构建RESTful Web服务

RESTful Web 服务简介 REST 在 2000 年由 Roy Fielding 在博士论 文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之一. REST 中最 重要的概念是资源(resources),使用全球 ID(通常使用 URI)标识.客户端 应用程序使用 HTTP 方法(GET/ POST/ PUT/ DELETE)操作资源或资源集. RESTful Web 服务是使用 HTTP 和 REST 原理实现的 Web 服务.通常,RESTful Web 服务应该定义

Spring Boot特性

1. SpringApplication SpringApplication 类是启动 Spring Boot 应用的入口类,你可以创建一个包含 main() 方法的类,来运行 SpringApplication.run 这个静态方法: public static void main(String[] args) { SpringApplication.run(MySpringConfiguration.class, args); } 运行该类会有如下输出: . ____ _ __ _ _ /\

Spring Batch

背景介绍 一直以来,open source的项目和社区为企业级应用提供了大量的web-based和SOA messaging-based的框架,而对批处理(batch processing)关注的较少,因为缺少标准和可重用的批处理框架,导致企业内部出现了大量的一次性的(one-off)和闭门造车(in-house)的批处理解决方案(1688的task就是典型代表). 鉴于此,SpringSource和埃森哲公司联手致力于改变此状况,结合埃森哲在批处理上的架构经验和SpringSource的技术优

jersey-Jersey+Spring程序中如何实现拦截器

问题描述 Jersey+Spring程序中如何实现拦截器 如题,项目中采用了Jersey+Spring实现Restful webservice,现在要对接口进行身份验证,方案已经确定,但如何实现类似于struts或SpringMVC的interceptor的效果?对所有请求进行身份验证1,备选方案是利用J2EE的filter2,想通过Spring的AOP来实现,切面是Jersey的Resource,但怎样注入HttpServletRequest呢? 解决方案 Jersey本身就提供了Reques

《Jersey用户指南》翻译邀请

7月并发网组织大家翻译<Jersey用户指南>.有兴趣的同学可以通过评论领取,翻译完成之后再并发网直接提交审核. 一次领取一篇,一篇建议领取一个章节,翻译完成之后可以继续领取,领取文章后最好在一个星期内翻译完成,如果不能完成翻译请通过评论告知,以便于其他人可以继续翻译. Table of Contents Preface 1. Getting Started 1.1. Creating a New Project from Maven Archetype 1.2. Exploring the