JAVA开发 在 Spring Boot 中集成 Swagger

ops/2024/12/26 18:28:59/

Swagger 是一个广泛使用的 API 文档生成工具,可以帮助你自动生成和维护 RESTful API 的文档。在不同的框架中集成 Swagger 通常需要添加相应的依赖项。以下是几种常见 Java 框架(如 Spring Boot)中集成 Swagger 的依赖配置。

在 Spring Boot 中集成 Swagger

Spring Boot 结合 Swagger 可以通过 springfox-swagger2springfox-swagger-ui 库来实现。以下是如何在 Spring Boot 项目中添加这些依赖的步骤。

1. 添加 Maven 依赖

在你的 pom.xml 文件中添加以下依赖:

<dependencies><!-- 其他依赖 --><!-- Springfox Swagger2 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>3.0.0</version></dependency><!-- Springfox Swagger UI --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>3.0.0</version></dependency><!-- 如果使用的是 Spring Boot 3.x, 需要额外添加 swagger-models --><dependency><groupId>io.swagger.core.v3</groupId><artifactId>swagger-annotations</artifactId><version>2.2.8</version></dependency><dependency><groupId>io.swagger.core.v3</groupId><artifactId>swagger-models</artifactId><version>2.2.8</version></dependency>
</dependencies>
2. 启用 Swagger

创建一个配置类来启用 Swagger 并配置其基本信息。

java">import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage("com.yourpackage.controller")) // 替换为你的控制器包路径.paths(PathSelectors.any()).build();}
}
3. 访问 Swagger UI

启动你的 Spring Boot 应用后,可以通过以下 URL 访问 Swagger UI:

http://localhost:8080/swagger-ui/index.html

在 Spring Boot 3.x 中集成 Swagger

由于 Spring Boot 3.x 使用了 Jakarta EE,一些库可能需要更新版本。以下是适用于 Spring Boot 3.x 的依赖配置。

1. 添加 Maven 依赖

在你的 pom.xml 文件中添加以下依赖:

<dependencies><!-- 其他依赖 --><!-- OpenAPI 3.x for Spring Boot 3.x --><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.0.4</version></dependency>
</dependencies>
2. 启用 Swagger

对于 Spring Boot 3.x,通常不需要额外的配置类,因为 springdoc-openapi-starter-webmvc-ui 会自动配置 Swagger。

3. 访问 Swagger UI

启动你的 Spring Boot 应用后,可以通过以下 URL 访问 Swagger UI:

http://localhost:8080/swagger-ui/index.html

示例代码

以下是完整的示例代码,展示了如何在 Spring Boot 3.x 项目中集成 Swagger。

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>3.0.6</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- OpenAPI 3.x for Spring Boot 3.x --><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.0.4</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></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>
</project>
java_178">DemoApplication.java
java">package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}
java_195">UserController.java
java">package com.example.demo.controller;import com.example.demo.model.User;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/api/users")
@Tag(name = "User Management", description = "Endpoints for managing users")
public class UserController {@Operation(summary = "Create a new user", responses = {@ApiResponse(responseCode = "201", description = "User created successfully",content = @Content(schema = @Schema(implementation = User.class))),@ApiResponse(responseCode = "400", description = "Invalid input"),@ApiResponse(responseCode = "500", description = "Internal server error")})@PostMapping("/")public ResponseEntity<User> createUser(@RequestBody User user) {// 处理用户创建逻辑return ResponseEntity.ok(user);}@Operation(summary = "Get a user by ID", responses = {@ApiResponse(responseCode = "200", description = "User found",content = @Content(schema = @Schema(implementation = User.class))),@ApiResponse(responseCode = "404", description = "User not found"),@ApiResponse(responseCode = "500", description = "Internal server error")})@GetMapping("/{id}")public ResponseEntity<User> getUserById(@PathVariable Long id) {// 处理获取用户逻辑User user = new User(id, "John Doe", "john.doe@example.com");return ResponseEntity.ok(user);}
}
java_241">User.java
java">package com.example.demo.model;import lombok.Data;@Data
public class User {private Long id;private String name;private String email;
}

总结

  • Spring Boot 2.x:

    • 添加 springfox-swagger2springfox-swagger-ui 依赖。
    • 创建配置类启用 Swagger。
  • Spring Boot 3.x:

    • 添加 springdoc-openapi-starter-webmvc-ui 依赖。
    • 不需要额外的配置类,springdoc-openapi-starter-webmvc-ui 会自动配置 Swagger。

通过以上步骤,你可以在 Spring Boot 项目中成功集成 Swagger,并生成和查看 API 文档。


http://www.ppmy.cn/ops/145182.html

相关文章

前端编程训练 异步编程篇 请求接口 vue与react中的异步

文章目录 前言代码执行顺序的几个关键点接口请求vue与react中的异步 vue中的异步react的state修改异步 前言 本文是B站三十的前端课的笔记前端编程训练,异步编程篇 代码执行顺序的几个关键点 我们可以理解为代码就是一行一行&#xff0c;一句一句是执行&#xff08;定义变…

使用envoyfilter添加请求头

该envoyfilter实现了这样一个功能&#xff0c;如果请求头中含有Sw8&#xff0c;则添加请求头HasSw8: true。 1. 内嵌lua脚本 apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata:name: add-header-filternamespace: demo-bookinfo # 可根据实际情况调整命…

BP分类-反向传播神经网络(Backpropagation Neural Network)

BP分类-反向传播神经网络&#xff08;Backpropagation Neural Network&#xff09; 源代码 &#xff08;托管在Github&#xff09; BP分类的用途介绍 什么是BP神经网络&#xff1f; BP神经网络&#xff0c;即反向传播神经网络&#xff08;Backpropagation Neural Network&a…

sentinel学习笔记7-熔断降级

本文属于sentinel学习笔记系列。网上看到吴就业老师的专栏&#xff0c;写的好值得推荐&#xff0c;我整理的有所删减&#xff0c;推荐看原文。 https://blog.csdn.net/baidu_28523317/category_10400605.html 限流需要我们根据不同的硬件条件做好压测&#xff0c;不好准确评估…

快速汇总Word表格

示例需求&#xff1a;Word文档中的有多个表格&#xff0c;其中最后一个表格为汇总表格&#xff0c;其他的为数据表格&#xff0c;如下图中左侧所示。 现在需要根据Category1和Category2&#xff0c;在数据表格中查找&#xff0c;如果找到匹配行&#xff0c;那么 为数据表中改…

常用JavaScript工具函数封装与优化

通用JavaScript方法封装 在现代Web开发中&#xff0c;许多应用程序都需要处理常见的操作&#xff0c;如日期格式化、表单重置、数据字典回显、树形结构数据构建等。为了提高开发效率并减少重复代码&#xff0c;我们可以将这些常用的操作封装成通用函数&#xff0c;以便在多个项…

CSS|15 CSS3结构伪类border-collapse伪元素

15 CSS3 15.1 CSS3和CSS2之间的区别 css3 css2 新语法 新的属性 就是对css2进行扩充 删减 优化 15.2 结构伪类 案例一&#xff1a;结构伪类 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name&qu…

深入理解.NET内存回收机制

&#xff3b;前言&#xff1a;&#xff3d;.Net平台提供了许多新功能&#xff0c;这些功能能够帮助程序员生产出更高效和稳定的代码。其中之一就是垃圾回收器(GC)。这篇文章将深入探讨这一功能&#xff0c;了解它是如何工作的以及如何编写代码来更好地使用这一.Net平台提供的功…