Spring Boot 集成Jersey 创建JAX-RS RESTFul 应用程序。

`javax.ws.rs.core` 是Java Representational State Transfer (JAX-RS)规范的一部分 JAX-RS规范的主要目标是提供一种简单而统一的方式来开发基于REST架构的Web服务,使得Java开发者能够利用Java语言创建符合REST原则(如资源定位、无状态性、自描述消息等)的HTTP服务。它是Java EE的一部分,支持通过注解驱动的方式进行开发,简化了API的定义与客户端的访问过程。是Java Representational State Transfer (JAX-RS)规范的核心组成部分,它提供了一系列的类和接口来支持RESTful Web服务的开发。),以及与资源处理相关的类(如。 阅读详情

Spring Boot Jersey 教程展示了如何在 Spring Boot 应用程序中使用 Jersey 设置简单的 RESTFul 应用程序。Jersey 是Spring Boot @RestController.的替代。

Spring是一种流行的 Java 应用程序框架,用于创建企业应用程序。 Spring Boot是 Spring 框架演变的下一步。它有助于以最小的努力创建独立的、生产级的基于 Spring 的应用程序。它提倡使用约定优于配置原则而不是 XML 配置。

RESTful 应用程序

RESTFul 应用程序遵循 REST 架构风格,用于设计网络应用程序。RESTful 应用程序生成对资源执行 CRUD(创建/读取/更新/删除)操作的 HTTP 请求。RESTFul 应用程序通常以 JSON 或 XML 格式返回数据。

JAX-RS

Java API for RESTful Web Services (JAX-RS)是一种 Java 编程语言 API 规范,它支持根据 Representational State Transfer (REST) 架构模式创建 Web 服务。JAX-RS 使用注释来简化 Web 服务客户端和端点的开发和部署。JAX-RS 是 Java EE 的官方部分。

Jersey

Jersey是一个开源框架,用于在 Java 中开发 RESTful Web 服务。它是 Java API for RESTful Web Services (JAX-RS) 规范的参考实现。

Spring Boot Jersey 示例

以下应用程序是使用 Jersey 创建的简单 Spring Boot RESTful 应用程序。

这是项目结构。

 

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.4</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>SpringBootJersey</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>SpringBootJersey</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jersey</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

这是 Maven 构建文件。Spring Boot starters 是一组方便的依赖描述符,极大地简化了 Maven 配置。spring-boot-starter-parent有一些 Spring Boot 应用程序的常见配置。这spring-boot-starter-jersey是使用 JAX-RS 和 Jersey 构建 RESTful Web 应用程序的入门工具。它是spring-boot-starter-web. 这spring-boot-starter-test是使用 JUnit、Hamcrest 和 Mockito 等库测试 Spring Boot 应用程序的入门工具。

在 Maven中spring-boot-maven-plugin提供 Spring Boot 支持,允许我们打包可执行的 JAR 或 WAR 档案。它的spring-boot:run目标是运行 Spring Boot 应用程序。

application.properties
server.port=8086
server.servlet.context-path= /api
spring.main.banner-mode= "off"
logging.level.org.springframework= ERROR

在application.properties文件中,我们编写了 Spring Boot 应用程序的各种配置设置。我们设置端口和上下文路径。使用该banner-mode属性,我们关闭了 Spring 横幅。

我们将 spring 框架的日志级别设置为 ERROR。application.properties文件位于src/main/resources目录中。

JerseyConfig.java
package com.example.SpringBootJersey.config;

import com.example.SpringBootJersey.service.HelloService;
import com.example.SpringBootJersey.service.ReverseService;
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JerseyConfig extends ResourceConfig {

    public JerseyConfig() {

        register(HelloService.class);
        register(ReverseService.class);
    }
}

JerseyConfig注册两个服务类。

HelloService.java
package com.example.SpringBootJersey.service;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import org.springframework.stereotype.Service;

@Service
@Path("/hello")
public class HelloService {

    @GET
    @Produces("text/plain")
    public String hello() {
        return "Hello from Spring";
    }
}

这是HelloService. @Path注释定义了服务类将响应的 URL 。HelloService还用 Spring 的@Service自动检测注释。我们的服务方法只返回“Hello from Spring”消息。

ReverseService.java
package com.example.SpringBootJersey.service;

import javax.validation.constraints.NotNull;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import org.springframework.stereotype.Service;

@Service
@Path("/reverse")
public class ReverseService {

    @GET
    @Produces("text/plain")
    public String reverse(@QueryParam("data") @NotNull String data) {
        return new StringBuilder(data).reverse().toString();
    }
}

reverse()service 方法返回一个反转的字符串 。它接受一个参数,不能为空。@QueryParam 将 HTTP 查询参数的值绑定到资源方法参数。

ApplicationTests.java
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class ApplicationTests {

    @Autowired
    private TestRestTemplate restTemplate;

    @Test
    public void hello() {
        ResponseEntity<String> entity = this.restTemplate.getForEntity("/hello",
                String.class);
        assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK);
        assertThat(entity.getBody()).isEqualTo("Hello from Spring");
    }

    @Test
    public void reverse() {
        ResponseEntity<String> entity = this.restTemplate
                .getForEntity("/reverse?data=regit", String.class);
        assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK);
        assertThat(entity.getBody()).isEqualTo("tiger");
    }

    @Test
    public void validation() {
        ResponseEntity<String> entity = this.restTemplate.getForEntity("/reverse",
                String.class);
        assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }
}

在 中ApplicationTests,我们测试了两个端点。

SpringBootJerseyApplication.java
package com.example.SpringBootJersey;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootJerseyApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringBootJerseyApplication.class, args);
	}

}

Application设置 Spring Boot 应用程序 。@SpringBootApplication启用自动配置和组件扫描 。

$ mvn spring-boot:run

使用mvn spring-boot:run命令,我们运行应用程序。该应用程序部署在嵌入式 Tomcat 服务器上。

$ curl localhost:8086/api/hello
Hello from Spring

使用该curl命令,我们连接到 hello 端点。

$ curl localhost:8086/api/reverse?data=summer
remmus

夏天的角色被颠倒了。

在本教程中,我们在 Spring Boot 中使用 Jersey 创建了一个简单的 RESTFul 应用程序,它是 JAX-RS 规范的参考实现。

整合JAX-RS之利用Jersey框架实现RESTful 一. JAX-RS与Jersey简介 1. JAX-RS简介 在Java EE 6 中引入了对 JSR-311 的支持。JSR-311(也就是JAX-RS:Java API for RESTful Web Services)旨在定义一个统一的规范,它的核心概念是resource,也就是面向资源。JAX-RS使得 Java 程序员可以使用一套固定的接口来开发 REST 应用,避免了依赖于第三方框架。同时,JAX-RS 使用 POJO 编程模型和基于注解的配置,并集成了 JAXB,从而可以有效缩短 REST 阅读详情

相关推荐

springboot项目实战-Jersey Restful与Spring Boot集成

在目前的企业级开发中,从开发效率的角度来考虑,通常会选择使用前后端分离的开发形式。后端提供API接口,前端负责对接口进行调用,实现数据的返回和显示。前后端交互的一个重要工具是API,而Restful API是API的一种指导性设计思想,能让后端人员设计出更加优雅的API。本节介绍Restful API的概念和构建方式。

虾米大王的学习历程 884

SpringBoot+elasticsearch+JerseyRESTful +redis博客系统

包含技术Linux、Redis、spring boot、文件上传下载、FreeMarker、thymeleaf、spring jdbc、Spring Data JPA、 MyBatis、 Mybatis Generator逆向生成、CKEditor、AJAX异步上传文件、Jersey实现应用服务器和文件服务器分离、Elasticsearch

Spring Boot进阶(76):使用Spring Boot和Jersey打造高效 RESTful API

本文将会介绍如何使用Spring Boot和Jersey来构建高效的RESTful API。首先,我们将会了解RESTful API的概念和特点。接着,我们将介绍如何配置Jersey和Spring Boot,以及如何使用Jersey提供RESTful服务。最后,我们将提供完整的代码和测试用例,并进行总结和展望。

**My Coding Family** 1911

微服务系列文章之 Springboot集成Jersey

Component只需要保证JerseyConfig在Application类能够扫描的包下即可。Springboot默认把Jersey的根路径映射在/*上的;这个可以通过几种方式来配置,对于自定义的ResourceConfig方式来说,只需要在类上面添加一个@ApplicationPath注解即可:@Component。

Coder_Boy_的博客 2166

javax-ws java自带webservice实现方式

javax-ws java自带webservice实现方式 简单代码实现

如何优化Silvaco二极管仿真网格?这些参数设置技巧让你的结果更精确

本文详细介绍了如何优化Silvaco二极管仿真网格,通过精细调整网格参数提升仿真精度。重点解析了网格密度与计算精度的权衡、关键区域识别与网格强化策略,以及掺杂分布与网格适配技术,帮助工程师在半导体器件仿真中获得更准确的结果。

t8u9v0w1x的博客 660

【Spring Boot】Spring Boot + Jersey REST + JPA + Hibernate CRUD 示例

文章目录演示工具版本Jersey REST Web 服务的 JAX-RS API用于Jersey客户端的JAX-RS API1. Client2. WebTarget3. SyncInvoker 和 Invocation.Builder使用 Jersey 和 Spring Boot 的 REST 网络服务1. CRUD 的 REST Web服务URL2. 项目结构3. Maven 文件4. 创建 Jersey 端点5.使用 ResourceConfig 注册 Jersey 端点6. CORS配置7. 使用

猫巳的博客 847

876-基于STM32的毫米波雷达智能睡眠监测系统

基于STM32的毫米波雷达智能睡眠监测系统通过非接触式毫米波雷达检测人体呼吸频率和体动次数,结合WIFI数据传输和OLED显示,实现睡眠质量分析与远程监控。系统核心功能包括生理参数采集、阈值设置、数据可视化及远程交互。

m0_50083169的博客 1543

Java全栈工程师-Apache CXF

本课程讲解CXF的JAX-WS方式开发WebService的服务端和客户端 本课程讲解CXF的JAX-RS注解方式开发WebService的服务端和客户端 本课程讲解SpringBoot整合CXF开发WebService

新能源知识库(62)组串式、集中式和高压直挂式

因需多台PCS及独立监控设备,单位功率成本比集中式高15%–20%。高压直挂式因省去变压器,大容量项目成本更低(>5MW时优势显著)。组串式储能、集中式储能和高压直挂式储能是当前主流的三类技术路线,其核心差异源于系统架构和控制逻辑的设计差异。组串式交流侧需变压器升压至10kV/35kV,高压直挂式可直接输出6kV/35kV电压,减少转换损耗。多台小功率PCS并联(每簇独立管理)单台大功率PCS(多簇直流侧并联)环流导致容量衰减(损失5%–8%)无变压器损耗(效率>99%)高压直挂电站(≥10MW)

竹君子之家 1515

Mac安装Weblogic教程

1.Weblogic的下载 这次安装的是最新版本12 官网下载地址: http://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html 下载需要登录账号,如没有账号要注册一个 下载后的文件如下图,其中fmw_12.2.1.3.0_wls_quick.jar文件就是安装包了,注意现在不要对它进行解压 2.安装前的确...

weixin_40102675的博客 5063

spring-boot-starter-jersey的使用

jersey与resteasy一样都是JAX-RS即Java API for RESTful Web Services标准的实现,spring-boot-starter-jersey提供了对Jersey RESTful Web服务框架的支持,能够让我们轻松的构建RESTful Web工程。 新建工程 <groupId>com.wl.jersey</groupId> &...

wl的博客 5762

AD9361 RSSI配置实战:从寄存器到精准功率测量的避坑指南

本文详细解析了AD9361芯片的RSSI配置实战,从寄存器设置到精准功率测量的全流程避坑指南。通过优化模式选择、测量持续时间及高级参数配置,实现高精度信号强度测量,并分享实际项目中的校准流程与性能优化技巧,帮助工程师提升射频接收链路的测量精度。

weixin_38166557的博客 443

使用javax.ws.rs构建Restful API和借助Dubbo实现远程RPC调用

java.ws.rs 是 jax-rs 规范中定义的包名。 jax-rs全程 Java API for RESTful Services 关于jax-rs相关的参考: https://blog.youkuaiyun.com/wabiaozia/article/details/70487306 https://www.cnblogs.com/caogen1991/p/7902722.html htt...

weixin_42465125的博客 3130

YOLO26改进 - SPPF模块 | 发论文神器!LSKA注意力改进SPPF,增强多尺度特征提取能力,高效涨点!!!

本文介绍了Large Separable Kernel Attention (LSKA)模块及其在YOLO26中的结合应用。LSKA旨在解决Visual Attention Networks (VAN)使用大内核卷积时的计算效率问题,通过将2D深度卷积层的卷积核分解为级联的水平和垂直1-D卷积核,降低了计算复杂度和内存占用,且使VAN更关注物体形状。我们将集成LSKA的SPPF_LSKA模块引入YOLO26,大量实验表明,改进后的模型在对象识别、检测、分割和稳健性测试上表现出色。

魔改工程师的博客 252

15、远程操作水下航行器(ROV)的非线性控制系统设计

本文探讨了远程操作水下航行器(ROV)的非线性控制系统设计,重点介绍了多变量PID控制、改进的PD控制和滑模控制三种方法。详细阐述了各控制策略的原理、建模与仿真过程,并通过对比分析其在稳态误差、振荡、抖振及跟踪效果等方面的性能表现。文章还提出了针对不同控制方法的优化建议,并给出了选择合适控制策略的决策流程,为ROV高精度运动控制提供了系统性解决方案。

sun99的博客 156

javax.ws.rs-api 常用注解

javax.ws.rs-api 常用注解 WebService 文章目录javax.ws.rs-api 常用注解@Path@GET @POST @PUT @DELETE@Consumes示例@Produces示例@PathParam示例@QueryParam示例@FormParam示例@FormDataParam@HeaderParam示例@CookieParam@MatrixParam示例@DefaultValue示...

七乘563的博客 3万+

提交 ieee 手稿出现:Do not include the Reviewer PDF with my submission 怎么办

IEEE投稿Reviewer PDF选项说明 投稿时出现的"Do not include the Reviewer PDF with my submission"选项控制是否附带评审专用PDF文件。Reviewer PDF是系统自动生成包含所有投稿材料的完整PDF,用于同行评审。建议保持默认不勾选状态,除非确认编辑部不需要该文件,否则可能影响审稿流程。勾选表示不附带此PDF,不勾选则会正常生成并提交该评审文件。

ZhangJiqun&191cm&85kg 2195

javax.​ws.​rs注解:@Conumes 和 @Produces等

1、概述 @Consumes 注释代表的是一个资源可以接受的 MIME 类型。 @Produces 注释代表的是一个资源可以返回的 MIME 类型。 这些注释均可在资源、资源方法、子资源方法、子资源定位器或子资源内找到。   2、@Produces:返回的类型   a.返回给client字符串类型(text/plain)   @Produces(MediaType.TEXT_P...

aaaliuwei的博客 3047

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SpringBoot整合jersey

SpringBoot整合jersey这篇文章主要从以下几个方面来介绍。简单介绍下jersey,springboot,重点介绍如何整合springboot与jersey。 什么是jersey 什么是springboot 为什么要使用springboot+jersey 如何整合springboot与jersey 什么是jersey阅读官方文档请点击:jsersey。RESTful Web Service

github_38395241的博客 9586

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SpringBoot——集成Jersey

在Jersey中引入Spring MVC会带来根路径冲突的问题,因为它们各自的Servlet都默认处理根路径。注意:jersety starter模式使用jackson解析JSON。声明根路径,那么yml中的配置会覆盖注解中的配置。,jersey的跟路径为。actuator的端口为。注意,如果同时也使用了。,jersey的端口为。

吴声子夜歌的博客 1242

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

rest架构风格

REST是一种混合的架构风格,它的由来以及它的架构元素在笔者的前一篇文章《REST 架构风格的由来 & 元素》中已经描述了。本篇主要描述一下J2EE对REST的支持。Java是在J2EE6中引入了对REST的支持,即JSR-311(JAX-RS 1.1: The JavaTM API for RESTful Web Services),现在JAX-RS到2.0版本了,对应的是JSR-339,JSR是

琦琦可乐的博客 931

`spring-boot-starter-jersey` 是 Spring Boot 提供的一个启动器(Starter),用于在 Spring Boot 应用程序中集成 Jersey 框架

是一个非常有用的启动器,它简化了在 Spring Boot 应用程序中集成 Jersey 的过程。通过添加依赖、创建资源类和配置类,你可以快速构建和部署基于 Jersey 的 RESTful API。服务拆分原则1、粒度微小:根据业务功能划分服务粒度,总的原则是服务内部高内聚,服务之间低耦合。2、责任单一:每个服务只做一件事,即单一职责原则。3、隔离性原则:每个服务相互隔离,且不互相影响4、业务无关优先原则:基础服务,是一些基础组件,与具体的业务无关。

[Blog][Domain] programb.blog.youkuaiyun.com 636

01_学习使用javax_ws_rs_上传文件

如果我们不使用 Spring MVC , 而是 javax.ws.rs 的注解,该如何实现文件上传呢?

ShiJunzhiCome的博客 1481

JerseyConfig extends ResourceConfig

扫描rest包问题 三种: :1:JerseyConfig extends ResourceConfig public class JerseyConfig extends ResourceConfig { public JerseyConfig() { packages("com.bi.portal.server","com.bi.portal.inner")...

麦子的博客 1711
上一篇: 如何将本地jar文件添加到maven项目
下一篇: 如何在 Windows 中更改桌面位置
allway2
博客等级 码龄16年 6715粉丝 7974原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值