我目前正在使用SpringfoxSwagger来记录我的带有Java配置的 Boot 应用程序。我的API大约在75秒内启动,(原来是20秒没有Springfox)与整个扫描过程。我目前只需要控制器信息没有任何模型信息。有没有办法我可以排除模型扫描从启动过程中,以使我的API启动更快?有没有其他方法可以让它更快?我用的是swagger1.2
dgtucam11#
有一种方法可以防止Sprinfox框架生成指定忽略类型的Swagger模型或参数信息,你必须使用SwaggerSpringMvcPlugin或Docket类中的方法ignoredParameterTypes,让它知道要忽略的类型。
SwaggerSpringMvcPlugin
Docket
ignoredParameterTypes
下面是一个忽略类型的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() { ... } }
下面是一个忽略类型的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() { ... } }
ff29svar2#
在swagger 3.0中,@Hidden注解可用,该注解存在于io.swagger.v3.oas.annotations包中它可以用在类或方法的顶部,以排除swagger文档中的资源。
@Hidden
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
huus2vyu4#
我有很多模型类。扫描过程需要几分钟。有没有办法停止扫描而不必单独列出所有的类文件?我们使用的是Swagger 3.0
4条答案
按热度按时间dgtucam11#
有一种方法可以防止Sprinfox框架生成指定忽略类型的Swagger模型或参数信息,你必须使用
SwaggerSpringMvcPlugin
或Docket
类中的方法ignoredParameterTypes
,让它知道要忽略的类型。摇摆1示例
下面是一个忽略类型的Swagger1Java配置示例,它确实对我的应用程序启动时间产生了影响。
摇摆2示例
下面是一个忽略类型的Swagger2Java配置示例,
ff29svar2#
在swagger 3.0中,
@Hidden
注解可用,该注解存在于io.swagger.v3.oas.annotations包中它可以用在类或方法的顶部,以排除swagger文档中的资源。
gdx19jrr3#
Springfox Swagger 2通过GET /v2/api-docs获取UI数据,这些数据将Map到springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation()。因此,您只需使用扫描逻辑创建一个bean来代替“ServiceModelToSwagger 2 Mapper”:
参考我的另一个相关回答:https://stackoverflow.com/a/64057512/14332259
huus2vyu4#
我有很多模型类。扫描过程需要几分钟。有没有办法停止扫描而不必单独列出所有的类文件?
我们使用的是Swagger 3.0