1、Maven依赖
<?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>2.5.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zeekrlife.jira</groupId>
<artifactId>mcp-tool</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>jira-app</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<!-- knife4j导出swagger文档 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2、Swagger配置
/**
* 访问路径ip:port/doc.html
*/
@Configuration
//@EnableOpenApi
@EnableKnife4j
public class SwaggerConfig {
/**
* 用于读取配置文件 application.properties 中 swagger 属性是否开启
*/
@Value("${swagger.enabled:true}")
private Boolean swaggerEnabled;
/**
* 生成通用响应信息
*/
private List<Response> getGlobalResponseMessage() {
List<Response> responseList = new ArrayList<>();
responseList.add(new ResponseBuilder().code("404").description("找不到资源").build());
return responseList;
}
/**
* 设置授权信息
*/
private List<SecurityScheme> securitySchemes() {
ApiKey apiKey = new ApiKey("tfToken", "token", "header");
return Collections.singletonList(apiKey);
}
@Bean
public Docket docket() {
// OAS_30:区别于 V2,(OpenAPI Specification 的简称 OAS)
return new Docket(
// 使用 OpenAPI 3.0
DocumentationType.OAS_30)
.enable(swaggerEnabled)
// API 信息
.apiInfo(apiInfo())
// API 分组
//.groupName(swaggerProperties.getGroupName())
.select()
// 对某个包的接口进行监听
.apis(RequestHandlerSelectors.basePackage("com.dsf.mcp.controller"))
// 监听所有接口
// .apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
//.globalRequestParameters(getGlobalRequestParameters())
.globalResponses(HttpMethod.GET, getGlobalResponseMessage())
.globalResponses(HttpMethod.POST, getGlobalResponseMessage())
.globalResponses(HttpMethod.DELETE, getGlobalResponseMessage())
.globalResponses(HttpMethod.PUT, getGlobalResponseMessage())
//添加登录认证
.securitySchemes(securitySchemes()) ;
}
private ApiInfo apiInfo() {
/*作者信息*/
Contact contact = new Contact("Jira", "https://demo.com", "123@qq.com");
return new ApiInfoBuilder()
// 文档标题
.title("能力门户")
// 文档描述
.description("能力门户")
// 联系人信息
.contact(contact)
// 文档版本
.version("1.0")
.build();
}
}
3、Spring MVC配置
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/swagger-ui/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
.resourceChain(false);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/swagger-ui/")
.setViewName("forward:/swagger-ui/index.html");
}
}