Suddenly Springfox Swagger 3.0 is not working with spring webflux

Praveen D picture Praveen D · Jul 7, 2020 · Viewed 8.6k times · Source

Application was working with Springfox Swagger 3.0 few days back. Suddenly it is stopped working. The Jar file which was created before a week is still working but now when we try to build a new Jar file, which is not working, even without any code/library changes. I have even referred the below URL but still facing issue.

404 error with swagger-ui and spring webflux

Below given my configuration:

POM file:

<properties>
    <java.version>1.8</java.version>
    <springfox.version>3.0.0-SNAPSHOT</springfox.version>
    <spring.version>2.3.1.RELEASE</spring.version>
</properties>
<repositories>
    <repository>
        <id>spring-libs-milestone</id>
        <name>Spring Milestone Maven Repository</name>
        <url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>${springfox.version}</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-spring-webflux</artifactId>
        <version>${springfox.version}</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>${springfox.version}</version>
    </dependency>
</dependencies>

Config Files:

@Configuration
@EnableSwagger2WebFlux
public class SwaggerConfiguration implements WebFluxConfigurer {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(new ApiInfoBuilder()
                        .description("My Reactive API")
                        .title("My Domain object API")
                        .version("1.0.0")
                        .build())
                .enable(true)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.reactive.controller"))
                .paths(PathSelectors.any())
                .build();

    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        registry.addResourceHandler("/swagger-ui.html**")
                .addResourceLocations("classpath:/META-INF/resources/");

        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

I am getting 404 error when I try to open the swagger page.

http://localhost:8080/swagger-ui.html

Can someone help me with this. Thanks in advance.

Answer

jrd picture jrd · Jul 8, 2020

The implementation has changed recently (see migrating from earlier snapshots for a brief update on this).

Now the UI is avaiable under /swagger-ui/ endpoint (not /swagger-ui.html).

You should also drop the @EnableSwagger2WebFlux annotation and addResourceHandlers() method, remove all springfox dependencies and add just one:

<dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>${springfox.version}</version>
</dependency>