From b7631ddeafde0a2633463533e7d9d8dd77e59859 Mon Sep 17 00:00:00 2001 From: PIGCLOUD Date: Mon, 9 Feb 2026 22:50:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(pigx-common-core):=20=E5=A2=9E=E5=BC=BAWeb?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=94=AF=E6=8C=81=E5=BC=82=E6=AD=A5=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在WebCommonConfiguration中新增异步任务执行器配置 - 实现WebMvcConfigurer接口并配置AsyncSupportConfigurer - 添加ThreadPoolTaskExecutor支持Spring MVC异步请求处理 - 通过TaskExecutionProperties配置线程池参数 --- .../core/config/WebCommonConfiguration.java | 48 ++++++++++++++++++- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/config/WebCommonConfiguration.java b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/config/WebCommonConfiguration.java index 28cb30a63..710f45e1a 100644 --- a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/config/WebCommonConfiguration.java +++ b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/config/WebCommonConfiguration.java @@ -18,18 +18,62 @@ package com.pig4cloud.pigx.common.core.config; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +import org.springframework.boot.autoconfigure.task.TaskExecutionProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.task.AsyncTaskExecutor; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.web.client.RestTemplate; +import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.util.concurrent.ThreadPoolExecutor; /** - * 通用Web配置类:提供RestTemplate的Bean配置 + * 通用Web配置类:提供RestTemplate和异步任务执行器的Bean配置 * * @author lengleng * @date 2025/05/01 */ @Configuration -public class WebCommonConfiguration { +@EnableConfigurationProperties(TaskExecutionProperties.class) +public class WebCommonConfiguration implements WebMvcConfigurer { + + private final TaskExecutionProperties taskExecutionProperties; + + public WebCommonConfiguration(TaskExecutionProperties taskExecutionProperties) { + this.taskExecutionProperties = taskExecutionProperties; + } + + /** + * 异步任务执行器,用于处理Spring MVC异步请求 + *

+ * 配置项通过 spring.task.execution.* 进行配置 + *

+ * + * @return AsyncTaskExecutor实例 + */ + @Bean + public AsyncTaskExecutor applicationTaskExecutor() { + TaskExecutionProperties.Pool pool = taskExecutionProperties.getPool(); + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(pool.getCoreSize()); + executor.setMaxPoolSize(pool.getMaxSize()); + executor.setQueueCapacity(pool.getQueueCapacity()); + executor.setKeepAliveSeconds((int) pool.getKeepAlive().toSeconds()); + executor.setThreadNamePrefix(taskExecutionProperties.getThreadNamePrefix()); + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + executor.setWaitForTasksToCompleteOnShutdown(true); + executor.setAwaitTerminationSeconds(60); + executor.initialize(); + return executor; + } + + @Override + public void configureAsyncSupport(AsyncSupportConfigurer configurer) { + configurer.setTaskExecutor(applicationTaskExecutor()); + } /** * 创建并配置RestTemplate的Bean方法