当前位置: 首页 > news >正文

Java Spring Boot项目中集成Swagger完整步骤

在Spring Boot项目中集成Swagger可以方便地生成API文档,支持在线测试接口。以下是详细的集成步骤:


1. 添加依赖

pom.xml中添加Swagger的依赖(以Springfox为例,这是最常用的Swagger实现):

<!-- 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,Springfox可能不完全兼容(因为Springfox已停止维护)。推荐改用 ​SpringDoc OpenAPI​(见下文替代方案)。
  • Springfox 3.0.0需要Java 8+,且与Spring Boot 2.x兼容性较好。

2. 配置Swagger

创建一个配置类(如SwaggerConfig.java),启用Swagger并配置基本信息:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;@Configuration
public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()// 指定扫描的包路径(替换为你的Controller包路径).apis(RequestHandlerSelectors.basePackage("com.example.controller"))// 指定路径匹配规则(这里匹配所有路径).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("Spring Boot API文档").description("RESTful API接口文档").version("1.0").build();}
}

3. 访问Swagger UI

启动Spring Boot应用后,访问以下URL查看Swagger界面:

  • Swagger UIhttp://localhost:8080/swagger-ui.html
  • API JSON文档http://localhost:8080/v2/api-docs

4. 替代方案:SpringDoc OpenAPI(推荐用于Spring Boot 3.x)​

如果使用Spring Boot 3.x,建议改用 ​SpringDoc OpenAPI​(支持OpenAPI 3.0标准),步骤如下:

1. 添加依赖
<!-- SpringDoc OpenAPI UI -->
<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.1.0</version> <!-- 检查最新版本 -->
</dependency>
2. 访问界面
  • Swagger UIhttp://localhost:8080/swagger-ui/index.html
  • OpenAPI JSONhttp://localhost:8080/v3/api-docs
3. 自定义配置(可选)​

通过application.ymlapplication.properties配置:

springdoc:api-docs:path: /v3/api-docsswagger-ui:path: /swagger-ui.htmltags-sorter: alphaoperations-sorter: alpha

5. 常见问题

  1. 404错误​:

    • 检查依赖版本是否与Spring Boot版本兼容。
    • 确保Controller类有@RestController@Controller注解,且方法有@RequestMapping或其衍生注解(如@GetMapping)。
  2. Spring Boot 3.x兼容性​:

    • Springfox已不再维护,强烈建议使用SpringDoc OpenAPI。
  3. 分组API​:

    • 可以通过多个Docket Bean实现API分组(Springfox)或使用SpringDoc的GroupedOpenApi

6. 示例项目结构

src/main/java
└── com.example├── controller│   └── UserController.java  # 示例Controller└── config└── SwaggerConfig.java   # Swagger配置类

通过以上步骤,你可以快速在Spring Boot中集成Swagger,生成清晰的API文档并支持在线测试。如果需要更高级的功能(如OAuth2安全集成、自定义UI等),可以参考Springfox官方文档或SpringDoc官方文档。

Swagger常见访问地址

Swagger本地常见访问地址主要取决于Swagger版本是否集成增强UI​(如Knife4j),具体如下:

1. Swagger 2.x(旧版,如Springfox)​

  • 默认路径​:
    http://localhost:8080/swagger-ui.html
    • 若项目有上下文路径​(如/api),则需追加路径:
      http://localhost:8080/api/swagger-ui.html

2. Swagger 3.x(新版,如SpringDoc OpenAPI)​

  • 默认路径​:
    http://localhost:8080/swagger-ui/index.html
    • 若集成Knife4j增强UI,则路径为:
      http://localhost:8080/doc.html
http://www.dtcms.com/a/307861.html

相关文章:

  • PPOCRLabel部署
  • 通义千问Qwen3-30B-A3B-Thinking-2507技术解析:推理模型的工程实践突破
  • Kafka Streams窗口技术全解析:从理论到电商实时分析实战
  • 解决SparkSQL创建出来的数据库hive中无法识别的问题
  • 嵌入式学习日志————TIM输出比较
  • go goroutine chan 用法
  • tensorflow目标分类:分绍(一)
  • 力扣面试150题--只出现一次的数字II
  • ctfshow-web入门-254-266-反序列化
  • 人工智能之数学基础:频率和概率之间的关系
  • react调用接口渲染数据时,这些表格里的数据是被禁选的
  • 运行图生视频/文生视频(Wan2.X等)的显卡配置总结
  • 如何在 Ubuntu 24.04 或 22.04 LTS Linux 上安装 DaVinci Resolve
  • 图论-最短路 Bellman-Ford算法
  • 8.2-使用字符串存储 UTF-8 编码文本
  • AI对话-SpringAI破局尝试
  • TensorFlow深度学习实战——DeepDream
  • 分布式锁的基本原理和基于lua脚本的实现(Redisson)
  • 异常检测:算法分类及经典模型概览
  • 3.Linux 系统文件类型与文件权限
  • 学习笔记《区块链技术与应用》第三天 网络 难度
  • 力扣 Pandas 挑战(5)---数据分组
  • RabbitMQ 消费者确认 (Ack/Nack) (With Spring Boot)
  • Linux多线程线程控制
  • 专题:2025半导体行业研究报告:从AI芯片到封测突围的生死局|附40+份报告PDF、数据汇总下载
  • virtualbox+UBuntu20.04+内存磁盘扩容
  • Java异常:java.util.NoSuchElementException
  • 【数据结构初阶】--二叉树(六)
  • 学习笔记《区块链技术与应用》第4天 比特币脚本语言
  • window中qemu使用(安装ubuntu系统)