禁用Swagger对于生产环境来说是一种很常见的需求,因为在生产环境中,通常不需要展示接口文档给用户。下面将介绍三种不同的方法来配置禁用Swagger。

1. 使用properties文件配置

在Spring Boot中,可以使用.properties或.yml文件来配置应用程序。要禁用Swagger,可以在配置文件中添加以下属性:

springfox.documentation.swagger.v2.enabled=false

上述配置会禁用Swagger的默认UI界面和API文档。这种方式比较简单易用,适用于大多数的场景。

2. 使用Java配置类

如果你更喜欢使用Java代码来配置应用程序,可以创建一个配置类来禁用Swagger。首先,需要添加Swagger相关的依赖:

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

然后,创建一个配置类,并使用@Configuration注解标记。在配置类中,使用@EnableSwagger2注解来启用Swagger,并创建一个Docket Bean来配置Swagger相关的信息。在该Bean的构造器中,使用enable方法禁用Swagger:

import org.springframework.context.annotation.Configuration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.builders.RequestHandlerSelectors;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.controller"))
                .paths(PathSelectors.any())
                .build()
                .enable(false);
    }
}

此配置将禁用Swagger的默认UI界面和API文档。

3. 使用Profile配置

在某些情况下,禁用Swagger可能仅适用于特定的Profile(环境)。在这种情况下,可以通过配置Profile来禁用Swagger。首先,在配置文件中添加以下属性:

spring.profiles.active=production

接下来,创建一个配置类,使用@Profile注解将其与上面的Profile关联,然后在配置类中禁用Swagger:

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.builders.RequestHandlerSelectors;

@Configuration
@EnableSwagger2
@Profile("!production")
public class SwaggerConfig {

    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.controller"))
                .paths(PathSelectors.any())
                .build();
    }
}

这样,当应用程序处于"production" Profile时,Swagger将被禁用。

以上是三种在生产环境下禁用Swagger的常用方法,根据具体情况选择最适合的方法进行配置。无论哪种方法,都能有效地禁用Swagger,保护生产环境的安全性和稳定性。