博主在学习三更博客项目时,在P86使用Swagger时遇到了困难,上网搜了很多,都在说由于Swagger停止维护,SpringBoot3与Swagger不兼容,导致出错。所以将原本的Swagger2换成了SpringDoc,更换过程如下:
1 首先导入新依赖
(1) 主文件的pom.xml导入
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
<version>2.1.0</version>
</dependency>
(2)framework导入如下
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
</dependency>
2 修改配置文件application.yml
springdoc:
swagger-ui:
path: /swagger-ui.html
enabled: true
api-docs:
enabled: true
logging:
level:
org.example: debug
3 编写SwaggerConfig.java文件
package org.example.config;
import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI springShopOpenAPI() {
return new OpenAPI()
.info(new Info().title("XXXX")
.description("XXXXX")
.version("v1")
.license(new License().name("Apache 2.0").url("http://localhost:7777")))
.externalDocs(new ExternalDocumentation()
.description("外部文档")
.url("https://springshop.wiki.github.org/docs"));
}
}
上述步骤完成后,点击http://localhost:7777/swagger-ui.html,出现一个问题:
而且根据网页检查发现api-doc响应的结果如下:
api-doc应该响应的是的Json格式的内容,但现在显示的是base64编码,所以去查看是否是格式转换出错了,发现是在WebConfig.java中使用fastjson将其转换为Json格式的,但是由于fastjson1.x版本与SpringDoc-api冲突,不能处理字符数组,所以出错。故还需完成最后一步。
4 更换fastjson版本
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.32</version>
</dependency>
最后重新刷新Maven项目,重新访问http://localhost:7777/swagger-ui.html,就可以显示出具体内容了。