当前位置: 首页 > 知识库问答 >
问题:

我有办法阻止springfox swagger扫描模型类吗?

景胜涝
2023-03-14

我目前正在使用Springfox Swagger来记录我的带有Java配置的spring boot应用程序。我的API在大约75秒内启动(如果没有Springfox,它最初是20秒),整个扫描过程。我目前只需要控制器信息,而不需要任何型号信息。有没有办法从启动过程中排除模型扫描,以使我的API启动得更快?有没有其他方法可以使它更快?我正在使用 swagger 1.2

共有3个答案

方昊英
2023-03-14

Springfox Swagger2通过GET /v2/api-docs获取UI数据,这些数据会映射到spring fox . documentation . swagger 2 . web . swagger 2 controller . GET documentation()。因此,您可以用您的推理逻辑创建一个bean来代替“ServiceModelToSwagger2Mapper ”:

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

               // scanning logics...
      }
}

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

姬振
2023-03-14

昂首阔步3.0 <代码> @Hidden > < /代码注释

它可以用在类或方法的顶部,以排除swagger文档中的资源。

郎慎之
2023-03-14

有一种方法,以防止Sprinfox框架

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

@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 Java配置的一个示例

@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() {
         ...
     }
}
 类似资料:
  • 问题内容: 我的PC上没有太多内存,处理器也很弱。尽管到目前为止,netbeans是我最喜欢的IDE,但在我现有的计算机上使用它几乎是难以忍受的,因为打开程序时,项目扫描会自动开始。 有没有办法防止Netbeans扫描项目? 问题答案: 嗨,乔治,我不知道这是否是答案,但是我右键单击并在不需要打开的项目上选择“关闭”。将您过去的所有项目都列出在那里是没有意义的。只需将您正在开发的那个打开。您始终可

  • 我想在加载ApplicationContext后将@Component类添加到spring容器中。但我不能使用BeanFactory。因为我使用的是BeanFactory,所以我必须为这些类定义bean。但是我不能定义它(如果我不使用反射)。因为这些类将在运行时由类加载器加载。 例如 在本例中,Spring在应用程序调用时为此类创建bean。没有必要用@Bean来定义bean。但是我想要的是编译S

  • 问题内容: 我是Go语言的初学者。我可能认为多年以来其他语言都太传统了,但这就是我想在Go中做的事情。假设以下用例 我有接口I。此接口具有功能start()和stop() 有许多实现接口的结构。结构A,结构B,结构C 当应用程序启动时,我想在结构A,B和C上调用start() 同样,当应用程序终止时,我想在A,B,C结构上调用stop()。 我不想在代码中的任何地方硬编码结构A,B和C来调用启动/

  • 我制作了一个简单的程序,根据公式中的3个数字计算增量。但是,小数点后的分数和数字(如3.33、3/4)有问题。如果我将其替换为任何字母,则会出现错误: 线程“main”java中出现异常。util。java上的InputMismatchException。base/java。util。扫描仪。throwFor(Scanner.java:939)访问java。base/java。util。扫描仪。下

  • 我正在为一个系统建模,该系统有一个创建资源的操作和其他消耗该资源的操作。然而,一个给定的资源只能被消耗一次——有没有一种方法可以保证在编译时这样做? 具体来说,假设第一个操作烘焙蛋糕,还有另外两个操作,一个用于“选择吃”蛋糕,另一个用于“选择吃蛋糕”,我只能做其中一个。 通过在我们使用蛋糕后在蛋糕上设置一个标志,很容易在运行时强制执行不保留已经吃过的蛋糕(反之亦然)的限制。但是有没有办法在编译时强

  • 在web上,我只找到了一种停止迭代方法的方法。通过使用limit()函数。但这会迭代一个具体的循环数。我想用它来停止一个谓词。 有没有办法用Streams做到这一点? 更新1:使用Java 8