如何将多控制器的包基设置为我的swaggerconfiguration?

jgzswidk  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(372)

我的依赖。。。。

<!-- SPRING BOOT -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

我的问题发生时,我试图在 swagger 两个包基地使用。下面你可以看到我对包基的意思,上面你可以看到我的依赖性。我的代码,我试图使用两个包基以下。

aPackageBase: com.companyx
bPackageBase: br.com.companyz

我不能做的事

我不能改变包的基础,因为它们是巨大的api。
我有10多个API遵循这2个包的基础。
我想用 aPackageBase 以及 bPackageBase .

当前代码,不起作用。。。

...
String aPackageBase = "com.companyx";
String bPackageBase = "br.com.companyz";

Docket docket = new Docket(DocumentationType.OAS_30).select() //
    .apis(RequestHandlerSelectors.basePackage(aPackageBase) //
        .and(RequestHandlerSelectors.basePackage(bPackageBase))) // That doesn't work :(....
        .paths(PathSelectors.any()).build()

...

我想要什么。。。

我只想用这两个软件包。我不想在运行时更改,当然我可以在运行时更改它,并且只使用 one packageBase ,但我已经厌倦了为每个api更改它。如果可以的话 aPackageBase 以及 bPackageBase 它会救我的命。哈哈。
注意:我不认为我需要显示更多关于我的招摇配置,因为我的问题只是在这一部分。

gev0vcfq

gev0vcfq1#

你得换衣服 Docket 豆定义有点。

Docket docket = new Docket(DocumentationType.OAS_30)
    .select() //
    .apis(RequestHandlerSelectors.basePackage(aPackageBase) //
        .or(RequestHandlerSelectors.basePackage(bPackageBase))) // use or here, not and
    .paths(PathSelectors.any())
    .build();
``` `RequestHandlerSelectors.basePackage(...)` 返回一个 `java.util.function.Predicate` 对象。 `Predicate#and` 要求这两个条件都为true,否则,因为任何api都只存在于其中一个包中。因此 `Predicate#or` .

相关问题