Spring boot 3.2.0
java 21
问题一 Type javax.servlet.http.HttpServletRequest not present
报错提示,网上看了说是
SpringBoot3.1.2版本依赖于jakarta依赖包,但Swagger依赖底层应用的javax依赖包,故找不到
解决
重新更换依赖(注释原有依赖重新依赖)
<!-- <!–引入swagger–>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger2</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations</artifactId>
<version>2.2.15</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.2.0</version>
</dependency>
修改配置文件
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SwaggerConfig {
@Bean
public GroupedOpenApi publicApi() {
return GroupedOpenApi.builder()
.group("public")
.pathsToMatch("/public/**")
.build();
}
@Bean
public GroupedOpenApi privateApi() {
return GroupedOpenApi.builder()
.group("private")
.pathsToMatch("/private/**")
.build();
}
}
页面成功出来,心里还在美滋滋,仔细一看怎么没有文档信息!!!
这还得了
问题二 页面显示接口文档信息
经过对配置文件研究发现 GroupedOpenApi.builder() 这个对分API进行分组的,
由于我没有"/public/**" 开头的接口所以不能进行展示
@Bean
public GroupedOpenApi publicApi() {
return GroupedOpenApi.builder()
//分组名
.group("public")
// API 接口的路径匹配
.pathsToMatch("/public/**")
.build();
}
解决
1.直接删除分组相关的配置或者不配置
2.根据匹配规则匹配自己的接口(还有其他的匹配构建方法,可以自行探索)
相关注解也需要替换
@Api(tags = "")
改为
@Tag(name = "")
@ApiModel(value="", description="")
改为
@Schema(name="", description="")
@ApiModelProperty(value = "", required = true)
改为
@Schema(name= "", description = "", required = true)
@ApiOperation(value = "", notes = "")
改为
@Operation(summary = "", description = "")
@ApiParam 改为 @Parameter
@ApiResponse(code = 404, message = "")
改为
@ApiResponse(responseCode = "404", description = "")
参考:
记录SpringBoot2.7.5升级SpringBoot3.0.0问题
SpringBoot3.1.2 引入Swagger报错Type javax.servlet.http.HttpServletRequest not present解决办法