0

我最近被迫将 Springfox fox 的版本从 2.9.x 升级到 2.10.0,之后以下代码停止工作:

import com.google.common.base.Predicate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.Collections;

import static com.google.common.base.Predicates.or;
import static springfox.documentation.builders.PathSelectors.regex;
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {

    private Predicate<String> paths() {
        return or(
                regex("/unit.*"),
                regex("/element.*"),
                regex("/resources.*"),
                regex("/calculation.*"),
                regex("/taxi.*")
        );
    }

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(paths())
                .build()
                .apiInfo(getApiInfo());
    }

升级后,我注意到注释 @EnableSwagger2 更改为 @EnableSwagger2WebMvc,在进行此更改后,我还注意到现在他们使用 Java 谓词而不是 Google 谓词。由于该 or(...) 方法,此代码不再编译,任何面临此问题的人都可以分享在较新版本的 swaggerfox 中执行此操作的新方法是什么。

4

1 回答 1

1

这是因为 swagger 和 swagger-ui 库不兼容。只需将您的 swagger-ui 依赖项更新到 2.10.0 版本即可。

例如,如果您使用的是 Maven:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.10.0</version>
</dependency>
于 2021-01-12T12:52:43.900 回答