REST和AOP

本文深入探讨了Jersey框架如何利用HK2项目集提供的AOP功能,以及 javax.ws.rs.ext.Providers 接口在REST框架中如何辅助完成过滤和读取拦截等功能。通过使用 Provider 实例,开发者能轻松实现REST请求流程中特定时间点的拦截和扩展,极大提高了开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AOP对增强REST式的Web服务的功能性、安全性和可扩展性等方面都具有深远意义,因此,完整的REST风格的框架都从容器级别支持AOP式的开发。Jersey可以在不依赖于Spring等AOP支持框架的情况下,天然地支持AOP。

Jersey的AOP功能来自于GlassFish项目集的HK2项目。Jersey通用包jersey-common依赖HK2(轻量级DI架构),包括hk2-api和hk2-locator。

其中hk2-locator依赖于javax.inject包、asm-all-repackage包和cglib包。从这些包名不难看出hk2-locator是致力于AOP方向的包。javax.inject包出自Java依赖规范(JSR-330),cglib是Spring用户熟知的动态代码生成工具。是Spring两种AOP实现方式的一种,其底层依赖于ASM。ASM来自于开源软件国际联盟OW2(http://www.ow2.org),OW2的前身是来自法国的ObjectWeb和来自中国的orientWare两个中间件开源组织。

Jersey提供的REST过滤器和拦截器为开发者提供了很贴心的切面扩展点,开发者无需像在Spring中为了针对某个类的方法进行AOP扩展而写配置文件。在Jersey中,只要实现相应扩展点的接口,即可实现REST请求流程中特点时间点的拦截、扩展,其他工作由底层的HK2帮我们做。典型的应用包括请求和响应的过滤和读取拦截。 

 

Providers详解

javax.ws.rs.ext.Providers是JAX-RS 2.0定义的一种辅助接口,其实现类用于辅助REST框架完成过滤和读取拦截等功能。使用注解@Provider来标注这些实现类,可以被JAX-RS2.0的运行时自动探测、加载。Provider实例可以通过@Context注解被依赖注入到其它实例中。Providers接口定义了4个方法,分别用来获取MessageBodyReader、MessageBodyWriter、ExceptionMapper和ContextResolver实例。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值