Jersey 开发RESTful(十七) Spring集成Jersey

【原创文章,转载请注明原文章地址,谢谢!】

前面所有的Jersey的使用,我们都是独立使用Jersey,包括资源类,Provider等。我们所有的示例代码都没有依赖于任何服务对象。本节将介绍Jersey集成Spring。

Spring集成Jersey

在正常应用中,Jersey只是作为服务端接口存在,而接口需要调用Service来完成具体的业务。在Jersey中,默认使用的是HK2这个DI/AOP框架来完成服务管理和注入的,所以我们前面看到的@Contract@Service等,都是HK2框架提供的。但是我们平时用的更多的,肯定是Spring容器,所以我们需要把Jersey和Spring集成起来。

但是注意一点,Jersey和Spring集成,更多的应该叫做Jersey来集成Spring,或者叫Jersey来启动Spring框架,使用的是HK2-Spring Bridge(HK2-Spring桥)依赖完成的。所以,我们一般不会把Jersey和SpringMVC混合起来使用,如果有类似网站门户和WebAPI共存的情况下,也会区分两个项目。

那首先来看下Jersey怎么集成Spring:

  • 引入Jersey-Spring依赖:
<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-spring4</artifactId>
    <version>2.26</version>
</dependency>

通过依赖包的名称,我们可以看出来,这里集成的是Spring4版本。当这个包引入之后,我们看看增加了哪些包到项目中:
image.png
如果我们需要使用自己的Spring版本,或者自己来控制Spring的依赖,我们可以在<dependency>中使用<exclusions>去掉Spring的依赖。

这里需要注意一下,第一次配置Spring+Jersey的时候,很容易出现java.lang.NoClassDefFoundError: org/glassfish/jersey/internal/inject/Binder异常,造成的原因是因为Jersey的版本不一致。注意jersey-spring4的版本都是2.26的,而我们之前使用的jersey都是2.25的,所以需要把各个版本调整一致即可:

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <version>2.26</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>2.26</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>2.26</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.ext</groupId>
        <artifactId>jersey-spring4</artifactId>
        <version>2.26</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值