如何在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 ...
随机推荐
- 安装单机版k8s
1.配置yum源,博主使用华为的镜像源 选择不同的系统版本下载使用: 2.安装etcd,kubernetes yum -y install etcd kubernetes 3.修改kubernetes ...
- jquery的y一些实用方法
jquery的在线手册 jQuery获取Select选择的Text和Value:语法解释:1. $("#select_id").change(function(){//code.. ...
- java8-并行计算
java8提供一个fork/join framework,fork/join框架是ExecutorService接口的一个实现,它可以帮助你充分利用你电脑中的多核处理器,它的设计理念是将一个任务分割成 ...
- base64压缩
1 /** * 压缩图片 * base64 : 图片base64字符串 * w : 图片宽高最大值 * callback : 回调函数 * quality : 压缩系数0-1之间, 默认0.92 * ...
- Cmakelist如何添加自己的组件
在components文件夹下添加各组件的CMakeList,其中可以设置的变量如下: COMPONENT_SRCS:要编译进当前组件的源文件的路径,推荐使用此方法向构建系统中添加源文件.COMPON ...
- 文件上传靶场 upload-labs搭建 Pass 1-4
upload-labs是一个练习文件上传的靶场 我们需要先安装中间件和PHP,推荐使用小皮面板,如何安装使用见sqli-labs搭建前部分 upload-labs下载:https://gitcode. ...
- TypeScript 学习笔记 — infer 类型推导、类型兼容 (九)
目录 1.ReturnType 返回值类型 2.Parameters 参数类型 3.InstanceType 实例类型 4.ConstructorParameters 构造函数参数类型 5.infer ...
- 构建基于深度学习神经网络协同过滤模型(NCF)的视频推荐系统(Python3.10/Tensorflow2.11)
毋庸讳言,和传统架构(BS开发/CS开发)相比,人工智能技术确实有一定的基础门槛,它注定不是大众化,普适化的东西.但也不能否认,人工智能技术也具备像传统架构一样"套路化"的流程,也 ...
- ACM-NEFUOJ-汉诺塔问题
P200汉诺塔 #include<bits/stdc++.h> using namespace std; int main() { int n,i; long long s[40]; s[ ...
- What's the best way to read and understand someone else's code?
Find one thing you know the code does, and trace those actions backward, starting at the end Say, fo ...