Swagger2:
pom依赖:
<!--swagger依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
配置类(SwaggerConfig):
@Configuration //声明该类为配置类
@EnableSwagger2//声明启动Swagger2
public class SwaggerConfig {
@Bean
public Docket customDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis("com.stars.springbootswagger.controller")//扫描的包路径
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("API接口文档")//文档说明
.version("1.0.0")//文档版本说明
.build();
}
}
需要注意的是Swagger2需要实现WebMvcConfigurer对静态资源进行处理
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
/**
* 静态资源映射
* @param registry
*/
public void addResourceHandlers(ResourceHandlerRegistry registry){
//解决swagger访问404
registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
SpringBoot项目启动后浏览器访问:http://localhost:9902/swagger-ui.html(此端口为项目启动配置的端口)
Swagger3:
pom依赖:
<!--swagger依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
这里和Swagger2的依赖不一样。
配置类(SwaggerConfig):
@Configuration //声明该类为配置类
@EnableOpenApi //声明启动Swagger
public class SwaggerConfig {
@Bean
public Docket customDocket() {
return new Docket(DocumentationType.OAS_30)
.pathMapping("/")
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))//扫描类上有@Api注解的
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("API接口文档")//文档说明
.version("1.0.0")//文档版本说明
.build();
}
}
这里的配置类的注解也稍有不同。Swagger3是不需要对静态资源进行处理的,内部已经做过了处理,可以看一下Swagger3的源码(SwaggerUiWebMvcConfigurer.java)
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package springfox.boot.starter.autoconfigure;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
public class SwaggerUiWebMvcConfigurer implements WebMvcConfigurer {
private final String baseUrl;
public SwaggerUiWebMvcConfigurer(String baseUrl) {
this.baseUrl = baseUrl;
}
public void addResourceHandlers(ResourceHandlerRegistry registry) {
String baseUrl = StringUtils.trimTrailingCharacter(this.baseUrl, '/');
registry.addResourceHandler(new String[]{baseUrl + "/swagger-ui/**"}).addResourceLocations(new String[]{"classpath:/META-INF/resources/webjars/springfox-swagger-ui/"}).resourceChain(false);
}
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController(this.baseUrl + "/swagger-ui/").setViewName("forward:" + this.baseUrl + "/swagger-ui/index.html");
}
}
SpringBoot项目启动后浏览器访问:http://localhost:9902/swagger-ui/index.html(此端口为项目启动配置的端口)