spring-boot - 为什么 Spring Boot 需要这么长时间才能找到方法处理程序
问题描述
我有一个使用 Spring Boot 和 Swagger 配置的服务。
我的招摇路径配置如下所示:
paths:
/hello/test:
post:
summary: Hello World Test
description: >-
Hello World
operationId: helloTest
tags:
- Hello
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/HelloRequest'
description: Hello Request
required: true
responses:
'200':
description: >
OK
content:
application/json:
schema:
$ref: '#/components/schemas/HelloResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServerError'
/confirmations:
post:
summary: Hello World Confirmation
description: >-
Hello World Confirmation
operationId: postConfirmations
tags:
- Confirmation
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConfirmationRequest'
description: Hello Confirmation Request
required: true
responses:
'204':
description: >
No Content
'400':
$ref: '#/components/responses/BadRequest'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServerError'
我的日志多次显示此消息
Did not find handler method for [/hello/test]
即使在显示此消息之后:
Returning handler method [public default org.springframework.http.ResponseEntity<com.sample.hello.generated.emvco.model.HelloResponse> com.sample.hello.generated.emvco.api.HelloApi.postTransactionCredentials(com.sample.hello.generated.emvco.model.HelloRequest)]
这需要长达 5 毫秒的初始分辨率,这会影响服务的性能。是什么导致 spring 反复寻找一条明确定义的路径?
解决方案
我认为这样的问题主要出现在项目结构不正确的情况下。我假设您的控制器类在扫描期间未找到或花费时间,因为它位于默认情况下不会扫描的包中。我猜您的应用程序的方式不正确或默认结构不正确。请将您的控制器更改为 com.app.controller 并检查性能。
推荐阅读
- javascript - 为什么 console.log 显示错误属性?
- flutter - Flutter:如何运行一个后台任务来监听数据队列?
- django - 如何将 TimeField 模型与当前时间进行比较?
- jenkins - 詹金斯从 cli 创建工作
- javascript - html2canvas 的问题
- tomcat - Debian 端口开放配置有什么问题?
- c++ - 在 Qt 中注册自定义 MetaType 的别名类型
- spring-boot - 使用 bootRun 和没有 isOptimizedLaunch = false 的 springboot 应用程序(kotlin、gradle)性能低下
- c# - 从 c# 中的 datagridview 获取记录 ID 并将数据显示到另一个表单
- installation - 未在 Windows 10 操作系统中使用 WIX 引导程序安装的先决条件