Spring Boot集成Jersey

背景

由于近期协助其他项目组进行改造,在改造过程中,发现对方代码中有一些不太明白的地方,一直没有使用过,如下:
在这里插入图片描述
由于没有接触过这种类似结构,改造起来毫无头绪,所以百度一下。。

概述

java.ws.rs是jax-rs规范中定义的包名
jax-rs全称Java API for RESTful Services
jax-rs规范目前版本是2.0规范文档
jax-rs中定义了
一组启动方式 (以jee作为http容器 还是配合servlet作为http容器)
一组注解@GET, @POST, @DELETE, @PUT, @Consumes … 通过 POJO Resource类 提供Rest服务.

如JSR规范定义Servlet是以继承HttpServlet 并重写doGet doPost do…方法一样 遵循这套标准都可以称为Servlet 写的Servlet程序 可以不经过任何修改放到任何实现Servlet容器中运行 写的jax-rs程序可以不经任何修改和任何jax-rs框架配合使用 而Spring MVC是以Servlet为http容器 并自己构建了一套Api没有遵循jax-rs规范

目前实现jax-rs标准的框架有很多

1、Apache CXF开源的Web服务框架
2、Jersey 由Sun提供的JAX-RS的参考实现
3、RESTEasy JBoss的实现
4、Restlet 由Jerome Louvel和Dave Pawson开发 是最早的REST框架 先于JAX-RS出现
5、Apache Wink 一个Apache软件基金会孵化器中的项目 其服务模块实现JAX-RS规范

既然是Java API for RESTful Services,那自然而然就想到现在比较火爆的springboot,一看资料果然可以集成兼容,选择了Jersey 作为集成对象,走起~

Spring Boot集成Jersey

1、引入依赖

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jersey</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

引入依赖之后,需要定义一个ResourceConfig资源配置,并且将需要对外暴露为RESTful接口的方法所在的类注册给jersey。

2、编写配置类

@Component
public class JerseyConfig extends ResourceConfig {

    public JerseyConfig() {
        register(Endpoint.class);
    }
}

JerseyConfig继承了ResourceConfig,在构造中对Endpoint进行了注册,Endpoint为对外暴露RESTful接口的实现类。
ps:ResourceConfig.register方法支持链式调用,我们可以一次性将所有需要对外暴露的endPoint类都注册给ResourceConfig。
3、编写实现类

@Component
@Path("/hello")
public class Endpoint {

    @GET
    public String message() {
        return "Hello";
    }

}

官网告诉我们,每一个注册的endPoint都应该是一个Spring的bean(标注了@Component,@Service等注解,声明为一个Spring的bean),并且需要在类上,方法上标注javax.ws.rs注解,如:@GET、@Path等。

到此我们就完成了基本的Jersey整合Spring Boot的操作,启动应用,通过@Path声明的路径调用我们的接口即可。

4、测试

浏览器请求http://localhost:8080/hello,查看结果:
在这里插入图片描述
总的来说,还是比较简单直观的,习惯了使用SpringMVC之后,换一种开发方式也不失为一种新的体验,更重要的,Jersey框架不仅实现了JAX-RS规范,还提供了自有API以扩展JAX-RS, 它作为官方的实现是值得我们去学习的。

拓展:
除了JerseyConfig。我们还可以通过实现ResourceConfigCustomizer接口从而实现endPoint资源的注入:

@Component
public class DemoResourceConfigCustomizer implements ResourceConfigCustomizer {
    @Override
    public void customize(ResourceConfig config) {
        config.register(SpringbootResource.class);
    }
}

建立了一个实现ResourceConfigCustomizer接口的配置类DemoResourceConfigCustomizer,实现它的回调方法customize,通过ResourceConfig.register同样实现了资源的注册。

Spring Boot 可以通过集成 JAX-RS 规范来使用 RESTful 服务。下面是一些步骤,帮助您在 Spring Boot 应用程序中使用 JAX-RS: 1. 添加 JAX-RS 依赖 将以下依赖项添加到您的 pom.xml 文件中: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jersey</artifactId> </dependency> ``` 2. 创建 REST 资源类 创建一个类,并使用 @Path 注解将其标记为 REST 资源类。在这个类中,您可以使用 JAX-RS 注解定义 RESTful 资源的行为。 ```java import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("hello") public class HelloResource { @GET @Produces(MediaType.TEXT_PLAIN) public String sayHello() { return "Hello, World!"; } } ``` 3. 创建一个 Application 类 创建一个继承自 javax.ws.rs.core.Application 的类,并使用 @ApplicationPath 注解将其标记为应用程序的根路径。 ```java import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; @ApplicationPath("api") public class JaxrsApplication extends Application { } ``` 4. 启动应用程序 在您的 Spring Boot 应用程序中添加以下代码来启动 JAX-RS: ```java import org.glassfish.jersey.server.ResourceConfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Bean public ResourceConfig resourceConfig() { return new ResourceConfig(); } } ``` 5. 启动应用程序并测试 启动应用程序,访问 URL http://localhost:8080/api/hello,您应该可以看到 "Hello, World!" 这个字符串。 这就是在 Spring Boot 应用程序中集成 JAX-RS 的基本步骤。您可以根据您的需求,使用更多的 JAX-RS 注解来定义 RESTful 资源类的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值