0
点赞
收藏
分享

微信扫一扫

Springboot2.5.4集成swagger和knife4j

西曲风 2023-05-01 阅读 72

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");
    }
}


举报

相关推荐

0 条评论