返回

非 Spring Boot 项目中集成 Swagger:一步一步指南

java

非 Spring Boot 项目中集成 Swagger:一步一步指南

简介

Swagger 是一个强大的工具,可帮助开发人员生成交互式的 RESTful API 文档。本文将指导你如何将 Swagger 集成到基于 Spring Framework 的非 Spring Boot 项目中。

先决条件

  • Spring Framework 4.3 或更高版本
  • Swagger 2.5.0 或更高版本

步骤

1. 添加 Swagger 依赖项

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

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.5.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.5.0</version>
</dependency>

2. 配置资源处理程序

WebConfig 类中配置资源处理程序以公开 Swagger UI 和 WebJAR 资源:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}

3. 配置 Swagger

创建 SwaggerConfig 类来配置 Swagger:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .build();
    }
}

4. 配置 web.xml

web.xml 中添加以下配置:

<servlet-mapping>
    <servlet-name>swagger-api</servlet-name>
    <url-pattern>/swagger-api/*</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>swagger-api</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/swagger-servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>

5. 配置 swagger-servlet-context.xml

创建 swagger-servlet-context.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-4.3.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

    <context:component-scan base-package="com.example.controller" />

    <mvc:annotation-driven />
</beans>

运行应用程序

完成配置后,运行应用程序并导航到以下 URL:

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

常见问题解答

1. 404 错误:

确保 swagger-ui.html 和 WebJAR 资源位于正确的位置。

2. 文档为空:

检查你是否正确扫描了包含 API 控制器类 的包。

3. 无法访问文档:

检查 web.xml 配置是否正确,并且 swagger-api servlet 已启动。

4. 使用 WebConfig 配置资源处理程序:

WebConfig 类用于配置 Spring Web 应用程序的资源处理程序。在此上下文中,它用于公开 Swagger UI 和 WebJAR 资源。

5. Docket API 配置:

Docket 类用于配置 Swagger API。它定义了哪些 API 路径和控制器方法应纳入文档。

结论

通过遵循本文中的步骤,你可以将 Swagger 集成到非 Spring Boot 项目中,轻松生成交互式的 RESTful API 文档。