教你实现 Jakarta EE 与 Spring Boot 的关系

在微服务架构的今天,Jakarta EE 与 Spring Boot 的结合为Java开发者带来了更多的灵活性。在本文中,我们将指导你如何实现 Jakarta EE 与 Spring Boot 的集成。我们会通过实用的步骤和代码示例来帮助你理解这一过程。

流程概述

在开始之前,我们来看看整个实现的流程。这是我们将要进行的步骤:

步骤 描述
1 创建一个新的 Spring Boot 项目
2 添加 Jakarta EE 依赖
3 创建一个简单的 JAX-RS 资源
4 配置 Servlet 过滤器
5 运行项目并测试 API

接下来,我们将详细解释每一个步骤。

步骤详解

1. 创建一个新的 Spring Boot 项目

首先,我们可以使用 Spring Initializr ( 创建一个新的 Spring Boot 项目。在 Initializr 中,你需要选择以下设置:

  • Project: Maven Project
  • Language: Java
  • Spring Boot: 选择最新的稳定版本
  • Dependencies: 选择 Spring Web

下载生成的 ZIP 文件并将其解压到你的工作目录中。

2. 添加 Jakarta EE 依赖

在你的 pom.xml 文件中添加 Jakarta EE 相关的依赖。我们需要添加 JAX-RS 依赖。将以下代码放入 <dependencies> 标签内部:

<dependency>
    <groupId>jakarta.ws.rs</groupId>
    <artifactId>jakarta.ws.rs-api</artifactId>
    <version>2.1.6</version> <!-- 可根据需要选择版本 -->
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet-core</artifactId>
    <version>2.34</version> <!-- 可根据需要选择版本 -->
</dependency>

解释:

  • jakarta.ws.rs-api 是 JAX-RS API 的核心依赖。
  • jersey-container-servlet-core 是 Jersey 框架的核心依赖,允许我们使用 Servlet。

3. 创建一个简单的 JAX-RS 资源

在你的 Spring Boot 项目下,创建一个新的包 com.example.demo.rest,然后在该包中创建一个名为 HelloWorldResource 的类,将以下代码添加到此类中:

package com.example.demo.rest;

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

@Path("/hello")
public class HelloWorldResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return "Hello, Jakarta EE and Spring Boot!";
    }
}

解释:

  • @Path("/hello") 定义了 API 端点的路径。
  • @GET 表示这是一个 GET 请求。
  • @Produces(MediaType.TEXT_PLAIN) 指明响应为纯文本格式。
  • hello() 方法返回一个简单的字符串。

4. 配置 Servlet 过滤器

为了使 Spring Boot 知道如何处理 JAX-RS 请求,我们需要配置 Jersey 的 Servlet 过滤器。在 src/main/java/com/example/demo/DemoApplication.java 中添加以下代码:

import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class DemoApplication {

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

    @Bean
    public ServletRegistrationBean<org.glassfish.jersey.servlet.ServletContainer> jerseyServlet() {
        ServletRegistrationBean<org.glassfish.jersey.servlet.ServletContainer> registration = 
            new ServletRegistrationBean<>(new org.glassfish.jersey.servlet.ServletContainer(), "/api/*");
        registration.setName("JerseyServlet");
        return registration;
    }

    @Bean
    public ResourceConfig resourceConfig() {
        return new ResourceConfig(HelloWorldResource.class);
    }
}

解释:

  • 创建一个 JerseyServletServletRegistrationBean,将其映射到 /api/* 路径。
  • ResourceConfig 配置类用于注册我们的 JAX-RS 资源。

5. 运行项目并测试 API

现在我们已经完成了所有代码配置,可以运行 Spring Boot 应用。在项目根目录下打开命令行,执行以下命令:

mvn spring-boot:run

如果一切正常,你将看到 Spring Boot 启动并监听在 http://localhost:8080

接下来,打开浏览器或使用 Postman 发起请求:

GET http://localhost:8080/api/hello

你应该会看到以下响应:

Hello, Jakarta EE and Spring Boot!

类图展示

下面是我们的类图,展示了应用的基本结构:

classDiagram
    class DemoApplication {
        +main(args: String[]): void
        +jerseyServlet(): ServletRegistrationBean
        +resourceConfig(): ResourceConfig
    }

    class HelloWorldResource {
        +hello(): String
    }

    DemoApplication --> HelloWorldResource

总结

至此,你已经成功地将 Jakarta EE 与 Spring Boot 整合在一起,创建了一个简单的 JAX-RS API。在这个过程中,你学习了如何配置 Spring Boot,添加所需的依赖项,以及创建一个基本的 REST 端点。这只是一个简单的入门示例,未来你可以在此基础上扩展更复杂的功能。

通过学习 Jakarta EE 和 Spring Boot,你将能够更好地利用 Java 的强大能力,并创建高效的企业级应用程序。随着你对这些技术的深入了解,你会发现更多的可能性和应用场景。希望这篇指南能帮助你在 Java 开发的道路上迈出坚实的一步!