如何在SpringBoot项目中兼容Jersey和SpringMVC框架?
REST(Representational State Transfer)表象化状态转变(表述性状态转变),在2000年被提出,基于HTTP、URI、XML、JSON等标准和协议,支持轻量级、跨平台、跨语言的架构设计。是Web服务的一种新的架构风格(一种思想)。
Jersey框架介绍
Jersey RESTful WebService框架是一个开源的、产品级别的JAVA框架,支持JAX-RS API并且是一个JAX-RS(JSR 311和 JSR 339)的参考实现
JAX-RS 是用于快速开发 REST 应用程序的 Java API。 虽然 JAX-RS 提供了比 Servlet 更快速的 Web 应用程序开发方法,但JAX-RS 的主要目标是构建 RESTful 服务。
Jersey框架也提供了自己的API,提供了很多的特性和功能
常用的注解:
@Path 用于定义路径和URI,类型SpringMVC的RequestMapping,用来定位请求路径的。
@PathParam 用来把请求URL中的参数传入方法中,比如:/student/{id},这个注解可以用来获取路径上的id。
@GET @POST @PUT @DELETE 这些注解呢主要用于定义HTTP请求的类型。
@Consumes 可以定义请求的媒体类型
@Produces 定义响应媒体类型
@QueryParam 主要用于在URL上获取数据,常用于GET方法多
@HeaderParam 主要用于获取HTTP头部的数据
@FormParam 主要用于接收表单数据****
@Context 可以注入HttpServletRequest,HttpSession等特殊对象
SpringBoot中SpringMVC兼容Jersey
有人可能会问,SpringMVC挺好用的,我用的挺熟练的,为什么还需要使用Jersey框架呢?显而易见,Jersey框架在一些老一点项目中还是会有用到的,一些架构稍微老一点的公司就可能会需要进行框架的升级,必然需要兼容一些老的框架,因此也就需要进行解决,解决方案也不难,我们可以将两种API分开来,比如我们用两个前缀路径来区分这两种API,或者采用两个独立的项目来进行部署
这里我们就演示第一种:
整合Jersey
SpringBoot项目可以通过引入starter的形式,我这里采用的是2.7.2的SpringBoot版本
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
添加完依赖后,我们可以写一个控制器,我这里就写一个HelloController
@Path("/hello")
public class HelloController {
@GET
@Path("/hello")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String hello(@Context HttpServletRequest request) {
System.out.println(request.getRequestURI());
System.out.println("request");
return "Hello World!";
}
}
那写了这个还不能成功,还需要配置一个Jersey框架的配置类,并将这个Controller注册一下,这里也支持packages包扫描的方式。
@Configuration
@ApplicationPath("/jersey")
@Component
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
register(HelloController.class);
// packages("com.dy.demo.controller");
}
}
细心的小伙伴会发现上面有一个ApplicationPath,这个注解是Jersey提供的,主要用于区分是采用MVC还是这个框架的,相当于上面的这个hello接口的路径就会变成/jersey/hello/hello,然后MVC不进行配置的话就默认是/,当然也可以配置,可以在application.yaml中配置,这样是第一种解决方案,看起来还是比较优雅的,
spring:
application:
name: HelloWorld
mvc:
servlet:
path: /api
jersey框架的请求测试

MVC的请求测试

有人可能会疑惑,我肯定是从jersey框架更新到MVC框架呀,如果直接从jersey框架更新到这个MVC框架,确实是没有办法兼容的,但是如果想上面那样配置MVC的请求路径就可以区分出MVC请求了,也能实现兼容。
,我肯定是从jersey框架更新到MVC框架呀,如果直接从jersey框架更新到这个MVC框架,确实是没有办法兼容的,但是如果想上面那样配置MVC的请求路径就可以区分出MVC请求了,也能实现兼容
如何在SpringBoot项目中兼容Jersey和SpringMVC框架?的更多相关文章
- springboot(五).如何在springboot项目中使用拦截器
在每个项目中,拦截器都是我们经常会去使用的东西,基本上任一一个项目都缺不了拦截器的使用. 如日志记录.登录验证,session验证等,都需要拦截器来拦截URL请求,那springboot中的拦截器是如 ...
- 如何在SpringBoot项目中使用拦截器
相比springmvc,springboot中拦截器不需要在xml中配置,只需定义拦截器类 implements HandlerInterceptor 和拦截器拦截路径的配置类extends WebM ...
- 如何在 SpringBoot 项目中接入 ChartGPT
大家好,我是公子骏.最近体验了火爆全网的 ChartGPT,深刻体会了其强大的能力,这让我们程序猿对AI的未来突然有了广大的畅想空间. 我也在网上看到不少大牛通过 ChartGPT 来获取收益,就寻思 ...
- 如何在springboot项目中进行XSS过滤
简单介绍 XSS : 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意 ...
- 五分钟后,你将学会在SpringBoot项目中如何集成CAT调用链
买买买结算系统 一年一度的双十一购物狂欢节就要到了,又到剁手党们开始表演的时刻了.当我们把种草很久的商品放入购物车以后,点击"结算"按钮时,就来到了买买买必不可少的结算页面了.让我 ...
- 后端分页神器,mybatis pagehelper 在SSM与springboot项目中的使用
mybatis pagehelper想必大家都耳熟能详了,是java后端用于做分页查询时一款非常好用的分页插件,同时也被人们称为mybatis三剑客之一,下面 就给大家讲讲如何在SSM项目和sprin ...
- [Laravel-Swagger]如何在 Laravel 项目中使用 Swagger
如何在 Laravel 项目中使用 Swagger http://swagger.io/getting-started/ 安装依赖 swagger-php composer require zirco ...
- 如何在cocos2d项目中enable ARC
如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...
- 如何在NodeJS项目中优雅的使用ES6
如何在NodeJS项目中优雅的使用ES6 NodeJs最近的版本都开始支持ES6(ES2015)的新特性了,设置已经支持了async/await这样的更高级的特性.只是在使用的时候需要在node后面加 ...
- 如何在VUE项目中添加ESLint
如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...
随机推荐
- 003Java的诞生
003Java的诞生 1.计算机语言发展史 (1)第一代语言 机器语言 我们都知道计算机的基本计算方式都是基于二进制的方式. 二进制:010111001010110010110100 这种代码是直接输 ...
- 3-XSS漏洞
1.XSS原理 跨站脚本攻击是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种.它允许恶意用户将代码注入网页,其他用户在浏览网页时会受到影响.恶意用户利用xss代码攻击成功后,可能得到很高的权 ...
- 5G智能网关助力打造5G移动医疗车
医疗资源分布不均衡,是导致老百姓看病难的重要原因之一.随着新一代信息技术的快速发展和普及应用,基于5G远程通信技术.音视频数字化技术,解决医疗资源分布不均衡问题,打破空间限制,让群众在家门口就能享受到 ...
- 5G如何加速无人快递?5G智能网关新应用
网上购物已经是现代生活的主流消费方式之一,伴随网购的繁荣,物流快递行业也进入到一个最火热的时期.而在这之中,有限的快递配送能力和日益增长的配送需求的矛盾持续凸显,因此无人快递车一类的创新应用也应运而生 ...
- Unity泛型单例模式
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Singleto ...
- enobj.cn站有更新
1:整体样式 2:可以折叠app列表 3:手机端样式 4: Blog链接到博客园
- 【python】yaml文件的读写
[python]yaml文件的读写 冰冷的希望 2020-10-22 18:31:47 442 收藏 1分类专栏: python 文章标签: python yaml版权 python专栏收录该内容67 ...
- 初认Spring
官网地址:https://spring.io/ Spring Framework的系统架构 1.Core Contiainer:核心容器 2.AOP:面向切片编程 3.Aspects:AOP思想实现 ...
- 【转载】谈谈GIS三维渲染引擎
> 原文地址:https://zhuanlan.zhihu.com/p/419667971 三维引擎 minemap: 是我们公司的产品,主要以earth的形态展示,支持矢量切片+倾斜数据(这一 ...
- salesforce零基础学习(一百二十二)通过 excel / csv创建 object
本篇参考: https://help.salesforce.com/s/articleView?id=sf.dev_objectcreate_task_lex_from_spreadsheet.htm ...