059-整合JAX-RS and Jersey

JAX-RS初步介绍

JAX-RS 是代表restful web service的一套规范API,JAX-RS规范基于JAVA编程语言,它是用来创建Restful 风格的web services服务的。JAX-RS使用一系列注解来简化java开发。

JAX-RS也称JSR339 (全称java specifications requests java规范提案第339个),由jcp(java community process)组织经过投票通过。

为了加深对jsr的理解,举一个简单的例子,jsr 330标准就是依赖注入的提案,已经通过。


规范说明

规范定义了一些常见的注解(见下表),用来标注一种资源文件为restfun风格的资源文件:



Jersey

Jersey RESTful 框架是开源的RESTful框架, 实现了JAX-RS (JSR 311 & JSR 339) 规范。它扩展了JAX-RS 参考实现, 提供了更多的特性和工具, 可以进一步地简化 RESTful service 和 client 开发。尽管相对年轻,它已经是一个产品级的 RESTful service 和 client 框架。与Struts类似,它同样可以和hibernate,spring框架整合。

由于ssm整合在市场的占有率太高,所以很少一部分人去关注Jersey。所以网上有关于Jersey的介绍很少。但是它确实是一个非常不错的框架。对于请求式服务,对于GET,DELETE请求,你甚至只需要给出一个URI即可完成操作。



下面使用springboot整合jersey开发一个例子,首先创建项目:

可以看到测试接口只依赖一个jersey组件即可,要使用jersey,原来的web组件不用依赖了。



首先写一个不带参数的控制器:

然后来一个带参数的:

我们这时候启动服务,访问接口,是无法访问的:

两个接口都是提示报404,找不到。原因是我们的控制器bean需要注册到ResourceConfig中,n那么什么是ResourceConfig?


ResourceConfig

为了方便我们自定义应用,Jersey提供了org.glassfish.jersey.server.ResourceConfig类来简化我们的操作。ResourceConfig类是Jersey自己实现了Application,并且还实现了Configuration接口。

ResourceConfig类提供了非常多的方法来注册JAX-RS组件,比如自动的资源类扫描就是其提供的众多功能之一。

我们想要使用ResourceConfig类来注册我们自己的组件,只需要继承ResourceConfig,并且在构造方法中,注册我们自己的组件即可。


例如,把控制器的几个Bean注册进去可以这样写:

这时候,重启服务,访问即可成功:


如果控制器有多个,这样写显然很麻烦,那么扫码包路径是更好的选择:

上面的路径是可以传多个的,这时候重启,发现可以访问:

ResourceConfig中常用的方法如下:

packages:提供自动扫描组件,包括资源类,Provider,Feature;如果有多个包需要扫描,用分号隔开;

registerClasses:提供手动注册组件,包括资源类,Provider,Feature等,提供可变参数同时注册多个;

register:提供手动注册组件,包括Provider和Feature;

property:提供手动添加配置选项的方法;

例如:



代码:https://gitee.com/blueses/spring-boot-demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文/rammer 刘减减与宋晓过是大学同学。 开学前,激动的个别同学便创了个群,放上了贴吧。偶尔或者专门...
    Old_rammer阅读 3,258评论 1 4
  • 2018年2月26日,坚持记录293天 今天早上体重117.3斤,继续坚持,向目标110斤靠近。晚上为117.3斤...
    曼殊斐儿_bcbb阅读 1,265评论 0 1
  • 改一处而动全身 结构臃肿 还是使用上面的例子。参数类在A中接收http请求参数的时候,需要三个属性,然而在调用B的...
    JavaQ阅读 1,517评论 2 2

友情链接更多精彩内容