有什么方法可以阻止springfox swagger扫描模型类吗?

zzlelutf  于 2023-01-13  发布在  Spring
关注(0)|答案(4)|浏览(225)

我目前正在使用SpringfoxSwagger来记录我的带有Java配置的 Boot 应用程序。我的API大约在75秒内启动,(原来是20秒没有Springfox)与整个扫描过程。我目前只需要控制器信息没有任何模型信息。有没有办法我可以排除模型扫描从启动过程中,以使我的API启动更快?有没有其他方法可以让它更快?我用的是swagger1.2

dgtucam1

dgtucam11#

有一种方法可以防止Sprinfox框架生成指定忽略类型的Swagger模型或参数信息,你必须使用SwaggerSpringMvcPluginDocket类中的方法ignoredParameterTypes,让它知道要忽略的类型。

摇摆1示例

下面是一个忽略类型的Swagger1Java配置示例,它确实对我的应用程序启动时间产生了影响。

@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() {
         ...
     }
}

摇摆2示例

下面是一个忽略类型的Swagger2Java配置示例,

@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() {
         ...
     }
}
ff29svar

ff29svar2#

在swagger 3.0中,@Hidden注解可用,该注解存在于io.swagger.v3.oas.annotations包中
它可以用在类或方法的顶部,以排除swagger文档中的资源。

gdx19jrr

gdx19jrr3#

Springfox Swagger 2通过GET /v2/api-docs获取UI数据,这些数据将Map到springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation()。因此,您只需使用扫描逻辑创建一个bean来代替“ServiceModelToSwagger 2 Mapper”:

@Primary
@Component
class CustomServiceModelToSwagger2Mapper : ServiceModelToSwagger2MapperImpl() {
      override fun mapDocumentation(from: Documentation?): Swagger? {

               // scanning logics...
      }
}

参考我的另一个相关回答:https://stackoverflow.com/a/64057512/14332259

huus2vyu

huus2vyu4#

我有很多模型类。扫描过程需要几分钟。有没有办法停止扫描而不必单独列出所有的类文件?
我们使用的是Swagger 3.0

相关问题