Remove Basic Error Controller In SpringFox SwaggerUI
You can restrict the request handler selector to scan only the package of your project:
return new Docket( DocumentationType.SWAGGER_2)
.select()
.apis( RequestHandlerSelectors.basePackage( "your package" ) )
...
For example if your parent Package is com.app.microservice
package com.app.microservice;
Then use the following code it will only display the Controllers within the Package and disable/exclude others
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.app.microservice"))
.build();
}
I think, the most elegant solution is to include only @RestController
controllers into swagger, only thing to bear in mind, is to annotate all the REST controllers with that annotation:
new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
.paths(PathSelectors.any())
.build();
As BasicErrorController
is annotated with @Controller
only, swagger would avoid BasicErrorController
in definition file. Of course you can use your custom annotation instead of @RestController
to mark your REST controllers as controllers eligible by swagger.
It can be done using Predicate.not() .
@Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .paths(Predicate.not(PathSelectors.regex("/error.*"))) .build(); }