Is there a way I can stop springfox swagger from scanning the model classes?

后端 未结 3 992
小鲜肉
小鲜肉 2021-01-05 08:38

I\'m currently using Springfox Swagger to document my spring boot application with a Java config. My API starts in about 75 seconds, (it was originally 20 secs without Sprin

相关标签:
3条回答
  • 2021-01-05 09:24

    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.

    0 讨论(0)
  • 2021-01-05 09:27

    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
    @EnableSwagger
    public 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
    @EnableSwagger2
    public 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() {
             ...
         }
    }
    
    0 讨论(0)
  • 2021-01-05 09:29

    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
    @Component
    class CustomServiceModelToSwagger2Mapper : ServiceModelToSwagger2MapperImpl() {
          override fun mapDocumentation(from: Documentation?): Swagger? {
    
                   // scanning logics...
          }
    }
    

    refer to my another related answer : https://stackoverflow.com/a/64057512/14332259

    0 讨论(0)
提交回复
热议问题