当前使用版本(必填,否则不予处理)
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.5.5</version>
</dependency>
该问题是如何引起的?(确定最新版也有问题再提!!!)
这两个方法的正确行为应该是返回 boolean,但是这里返回了 Page,导致解析 Swagger OpenAPI 的时候引用了自己,造成死循环。
3.5.5有问题
public Page<T> setSearchCount(boolean searchCount) {
this.searchCount = searchCount;
return this;
}
public Page<T> setOptimizeCountSql(boolean optimizeCountSql) {
this.optimizeCountSql = optimizeCountSql;
return this;
}
optimizeCountSql:
$ref: '#/components/schemas/PageDs'
searchCount:
$ref: '#/components/schemas/PageDs'
3.5.4.1没问题:
@Deprecated
public boolean isOptimizeCountSql() {
return this.optimizeCountSql;
}
@Deprecated
public boolean isSearchCount() {
return this.searchCount;
}
optimizeCountSql:
type: boolean
deprecated: true
searchCount:
type: boolean
deprecated: true
重现步骤(如果有就写完整)
- 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.2.3</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.3.0</version>
</dependency>
- Java 接口
@GetMapping("/configs")
public R<IPage<Config>> handleConfigs(Page<Config> page, Config config) {
return R.ok(configService.findConfigs(page, config));
}
- 访问 /v3/api-docs.yaml 导出,观察两个版本 optimizeCountSql 和 searchCount 的差异。
报错信息
Caused by: java.lang.StackOverflowError: null
at java.base/java.lang.String.equals(String.java:1834)
at java.base/java.util.HashMap.putVal(HashMap.java:633)
at java.base/java.util.HashMap.put(HashMap.java:610)