Is there a way I can stop springfox swagger from scanning the model classes?
There is a way to prevent Sprinfox framework from generating a Swagger model or parameter information of specified ignored types. You have to use the method ignoredParameterTypes
in SwaggerSpringMvcPlugin
or Docket
class to let it know the types to be ignored.
Swagger 1 Example
Here is an example of Swagger 1 Java configuration with ignored types. It definitely had an impact on my application startup time.
@Configuration@EnableSwaggerpublic class SwaggerConfiguration { @Autowired private SpringSwaggerConfig springSwaggerConfig; @Bean public SwaggerSpringMvcPlugin api() { Class[] clazz = {MyClassA.class, MyClassB.class}; return new SwaggerSpringMvcPlugin(this.springSwaggerConfig) .apiInfo(apiInfo()) ... .ignoredParameterTypes(clazz); } private ApiInfo apiInfo() { ... }}
Swagger 2 Example
Here is an example of Swagger 2 Java configuration with ignored types,
@Configuration@EnableSwagger2public class SwaggerConfiguration { @Bean public Docket api() { Class[] clazz = {MyClassA.class, MyClassB.class}; return new Docket(DocumentationType.SWAGGER_2) .groupName("my-group") .select() .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()) .ignoredParameterTypes(clazz); } private ApiInfo apiInfo() { ... }}
With swagger 3.0 @Hidden
annotation is available which is present at package io.swagger.v3.oas.annotations
It can be used on top of the class or method to exclude the resource in swagger documentation.
Springfox Swagger2 acquire UI data through GET /v2/api-docs, which will mapping to springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation().So you can just create a bean to take place of 'ServiceModelToSwagger2Mapper' with your sanning logic:
@Primary@Componentclass CustomServiceModelToSwagger2Mapper : ServiceModelToSwagger2MapperImpl() { override fun mapDocumentation(from: Documentation?): Swagger? { // scanning logics... }}
refer to my another related answer : https://stackoverflow.com/a/64057512/14332259