精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

高效初始化!Spring Boot 3.3借助DAG加速Spring Beans加載!

開發 前端
本文詳細介紹了如何在 Spring Boot 3.3 中實現異步執行任務的最佳實踐。我們通過配置 YAML 文件、創建配置屬性類、實現異步任務服務類和控制器,最后使用前端 jQuery 調用異步接口,展示了異步任務的完整實現流程。

在現代軟件開發中,異步編程已成為提升系統性能和用戶體驗的重要手段。特別是在高并發場景下,異步任務的處理能夠有效降低響應時間,提高系統的可伸縮性。Spring Boot 3.3 提供了便捷的異步編程支持,使得開發者可以輕松實現高效的任務調度。本篇文章將詳細探討如何在 Spring Boot 項目中優雅地實現異步任務,包括配置、實現和調用的最佳實踐。

運行效果:

圖片圖片

若想獲取項目完整代碼以及其他文章的項目源碼,且在代碼編寫時遇到問題需要咨詢交流,歡迎加入下方的知識星球。

在本文中,我們將通過具體的代碼示例,講解如何配置 YAML 文件、創建配置屬性類、實現異步任務的服務類,以及如何通過前端頁面調用異步接口。通過這些步驟,你將能夠構建一個響應快速且高效的 Spring Boot 應用。

項目結構

首先,確保你的項目結構如下:

src
├── main
│   ├── java
│   │   └── com
│   │       └── icoderoad
│   │           └── async
│   │               ├── AsyncApplication.java
│   │               ├── config
│   │               │   ├── AsyncConfig.java
│   │               │   └── TaskProperties.java
│   │               ├── controller
│   │               │   └── TaskController.java
│   │               └── service
│   │                   └── TaskService.java
│   └── resources
│       ├── application.yml
│       └── templates
│           └── index.html
└── pom.xml

項目 pom.xml 配置

確保在 pom.xml 中引入必要的依賴:

<?xml versinotallow="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.3.4</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.icoderoad</groupId>
	<artifactId>async-spring-boot</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>async-spring-boot</name>
	<description>Demo project for Spring Boot</description>
	
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-web</artifactId>
	    </dependency>
	    <dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-thymeleaf</artifactId>
	    </dependency>
	    <dependency>
	        <groupId>org.projectlombok</groupId>
	        <artifactId>lombok</artifactId>
	        <optional>true</optional>
	    </dependency>
	    <dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-validation</artifactId>
	    </dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

YAML 屬性文件配置

在 src/main/resources/application.yml 中添加以下配置:

server:
  port: 8080
  
task:
  pool:
    core-size: 5  # 線程池核心大小
    max-size: 10   # 線程池最大大小
    queue-capacity: 25  # 隊列容量
    timeout: 5000  # 任務超時時間,單位毫秒

創建配置屬性類

創建 TaskProperties.java 來讀取 YAML 配置:

package com.icoderoad.async.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import lombok.Data;

@Data
@Component
@ConfigurationProperties(prefix = "task.pool")  // 讀取 task 下的配置
public class TaskProperties {
	
    private int coreSize;
    
    private int maxSize;
    
    private int queueCapacity;
    
    private int timeout;
    
}

創建異步配置類

在 AsyncConfig.java 中使用配置屬性類進行任務初始化:

package com.icoderoad.async.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

@Configuration
@EnableAsync  // 啟用異步功能
@EnableScheduling  // 啟用定時任務
public class AsyncConfig {

    @Autowired
    private TaskProperties taskProperties;

    @Bean
    public ThreadPoolTaskExecutor taskExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(taskProperties.getCoreSize());
        executor.setMaxPoolSize(taskProperties.getMaxSize());
        executor.setQueueCapacity(taskProperties.getQueueCapacity());
        executor.setThreadNamePrefix("Async-");
        executor.initialize();
        return executor;
    }
}

創建服務類

在 TaskService.java 中創建更典型的異步任務配置:

package com.icoderoad.async.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import com.icoderoad.async.config.TaskProperties;

import java.util.concurrent.CompletableFuture;

@Service
public class TaskService {

    @Autowired
    private TaskProperties taskProperties;

    @Async  // 表示該方法是異步執行的
    public CompletableFuture<String> executeAsyncTask() {
        try {
            Thread.sleep(taskProperties.getTimeout());  // 模擬耗時操作
            return CompletableFuture.completedFuture("異步任務執行完成!");
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            return CompletableFuture.completedFuture("任務被中斷!");
        }
    }
}

創建控制器

在 TaskController.java 中創建一個控制器來調用異步服務并返回 JSON 格式的接口:

package com.icoderoad.async.controller;

import java.util.concurrent.CompletableFuture;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.icoderoad.async.service.TaskService;

@RestController
@RequestMapping("/tasks")
public class TaskController {

    private final TaskService taskService;

    public TaskController(TaskService taskService) {
        this.taskService = taskService;
    }

    @PostMapping("/async-task")
    public ResponseEntity<CompletableFuture<String>> asyncTask() {
        CompletableFuture<String> result = taskService.executeAsyncTask();  // 調用異步任務
        return ResponseEntity.ok(result);
    }
}

創建前端頁面

在 src/main/resources/templates/index.html 中添加以下代碼,并使用 jQuery 調用 JSON 接口:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>異步任務示例</title>
    <link rel="stylesheet" >
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
    <h1>異步任務示例</h1>
    <button id="startTask" class="btn btn-primary">開始異步任務</button>
    <p id="result"></p>
</div>

<script>
    $(document).ready(function() {
        $('#startTask').click(function() {
            $.ajax({
                url: '/tasks/async-task',
                type: 'POST',
                contentType: 'application/json',  // 設置請求內容類型為 JSON
                dataType: 'json',  // 期望的響應數據類型
                success: function(data) {
                    $('#result').text(data);  // 顯示返回結果
                },
                error: function() {
                    $('#result').text('任務執行失敗!');
                }
            });
        });
    });
</script>
</body>
</html>

啟動測試

  1. 啟動 Spring Boot 應用:運行 AsyncApplication.java,確保應用成功啟動。
  2. 訪問前端頁面:打開瀏覽器并訪問 http://localhost:8080/index.html。
  3. 點擊按鈕:點擊“開始異步任務”按鈕,觸發異步任務的執行。
  4. 觀察行為:

立即返回:在點擊按鈕后,接口會立即返回,而不是等任務執行完。這是因為任務是異步執行的。

注意

這種設計允許用戶在等待異步任務完成時,繼續與頁面進行其他交互,提升了用戶體驗。這意味著,即使后臺任務還在執行,用戶也可以繼續操作頁面,而不會被阻塞。這樣,可以在高并發場景下有效提升系統的響應能力。

結論

本文詳細介紹了如何在 Spring Boot 3.3 中實現異步執行任務的最佳實踐。我們通過配置 YAML 文件、創建配置屬性類、實現異步任務服務類和控制器,最后使用前端 jQuery 調用異步接口,展示了異步任務的完整實現流程。

異步任務不僅提高了系統的響應速度,還能夠有效管理后臺處理任務,降低用戶等待時間。通過合理的線程池配置和異步執行的設計,我們可以使應用程序在高并發情況下依然表現出色。希望本文能為大家在實際項目中實現異步處理提供有效的參考,提升開發效率和用戶體驗。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2024-10-29 11:27:27

2024-10-30 08:05:01

Spring參數電子簽章

2024-10-07 08:18:05

SpringBOM管理

2023-05-03 23:48:24

Spring容器初始化

2024-03-05 18:21:02

LFSpring初始化

2025-05-21 10:09:09

Spring 5.xIOC編程

2025-03-14 10:37:24

SpringSpring IOC容器

2021-07-12 12:20:08

Spring初始化方案

2024-09-26 09:28:06

內存Spring

2024-10-11 11:46:40

2024-03-08 08:26:25

類的加載Class文件Java

2024-11-29 07:42:47

2024-01-23 08:47:13

BeanSpring加載方式

2025-07-01 01:00:00

Spring消息系統Redis

2019-01-15 11:40:14

開發技能代碼

2024-09-05 09:35:58

CGLIBSpring動態代理

2025-04-28 08:39:48

Spring初始化開發

2023-11-12 23:08:17

C++初始化

2025-04-25 11:25:00

SpringBean初始化

2022-11-09 07:49:12

Records類聲明代碼
點贊
收藏

51CTO技術棧公眾號

成年人视频免费在线播放| 久久久精品视频在线| 麻豆视频在线观看免费网站黄| 国产 日韩 欧美大片| 午夜免费日韩视频| 实拍女处破www免费看| 成人免费91| 动漫精品一区二区| 在线码字幕一区| 手机看片1024日韩| 蜜臀91精品一区二区三区| 九九热这里只有精品免费看| 久久亚洲AV成人无码国产野外| 久久精品黄色| 福利视频导航一区| 91成人在线视频观看| 国产在线资源| 成人免费视频视频| 国产欧美日韩中文| 天堂网av手机版| 天堂美国久久| 亚洲欧美999| 免费在线观看日韩av| 中文字幕91视频| 国产模特av私拍大尺度| 亚洲欧美视频一区二区三区| 久久综合色88| 久久日免费视频| 日韩深夜影院| 亚洲精品在线免费播放| gai在线观看免费高清| 欧美大电影免费观看| 亚洲国产精品自拍| 男同互操gay射视频在线看| 国模吧精品人体gogo| av成人免费在线| 91沈先生播放一区二区| 11024精品一区二区三区日韩| 午夜亚洲性色福利视频| 国内精品久久久久影院 日本资源| 国产成人自拍网站| 日本欧美国产| 一本大道久久加勒比香蕉| 亚洲精品乱码久久久久久久| 超碰一区二区三区| 精品日韩一区二区三区免费视频| 精品国产鲁一鲁一区二区三区| 欧美成人精品三级网站| 狠狠躁夜夜躁人人爽天天天天97| 国产精品12345| 爱情岛亚洲播放路线| 一区二区三区毛片| 天天做天天躁天天躁| 影音先锋在线播放| 亚洲乱码国产乱码精品精的特点| 亚洲狠狠婷婷综合久久久| 成人全视频高清免费观看| 国产三级一区二区| 日韩区国产区| 中文字幕在线播放| 18欧美亚洲精品| 国产精品乱人伦| 日本免费高清一区二区| 看电影就来5566av视频在线播放| 久久久久久久久久看片| 欧美一进一出视频| 国产午夜在线观看| 中文字幕制服丝袜一区二区三区 | 欧美xxxxx在线视频| jizzjizz中国精品麻豆| 五月激情丁香一区二区三区| 国产又粗又猛又爽又黄的网站| 中文在线手机av| 亚洲亚洲人成综合网络| 国产中文字幕免费观看| 日韩成人亚洲| 欧美乱熟臀69xxxxxx| 超碰人人cao| 欧美在线关看| 色哟哟亚洲精品一区二区| 久久精品亚洲a| 亚洲视频高清| 日本三级久久久| 一级全黄裸体免费视频| 国产白丝网站精品污在线入口 | 国产一区不卡| 久久精品电影一区二区| 国产精品1000| 日韩成人一区二区| 91亚色免费| 久久这里精品| 亚洲蜜臀av乱码久久精品| 国产精品三级一区二区| 深夜av在线| 欧美日韩高清一区二区不卡| 最新版天堂资源在线| 国产成人1区| 久久99精品视频一区97| 欧美一级做a爰片免费视频| 国产原创一区二区| 乱一区二区三区在线播放| 伦xxxx在线| 黑丝美女久久久| 中文字幕成人免费视频| 亚洲免费不卡视频| 久久97久久97精品免视看秋霞| 国产午夜精品理论片a级探花| 强制高潮抽搐sm调教高h| 在线欧美一区| 国产美女久久精品香蕉69| 亚洲精品成人电影| 欧美国产日韩亚洲一区| 全黄性性激高免费视频| 日韩精品一级毛片在线播放| 亚洲精品成人久久| 黄色a级片在线观看| 久久九九电影| 国产一区二区三区黄| 日本欧美在线视频免费观看| 欧美天堂在线观看| 无码人妻久久一区二区三区蜜桃| 欧美肉体xxxx裸体137大胆| 欧美激情日韩图片| 97超碰人人草| 亚洲国产精品成人综合| 成人在线免费观看av| 日韩高清二区| 久久在线免费观看视频| 黄色网址中文字幕| 91麻豆免费观看| 国产真人做爰毛片视频直播 | 精品视频一区二区三区免费| 久久久久国产精品区片区无码| 午夜精品国产| 91亚洲精品久久久久久久久久久久| 浮生影视网在线观看免费| 狠狠色狠狠色综合日日小说| 国产精品成人99一区无码| 午夜精品国产| 91在线短视频| 男男gaygays亚洲| 欧美一区二区视频在线观看| 亚洲少妇xxx| 久久99精品久久久| 亚洲最大色综合成人av| 久久亚洲人体| 国产一区二区三区18| 一级做a爰片久久毛片| 91免费看`日韩一区二区| 久久国产精品网| 国产劲爆久久| 91精品国产91久久久久久久久| 色婷婷中文字幕| 性欧美疯狂xxxxbbbb| 欧类av怡春院| 国产一区二区波多野结衣| 欧美视频成人| 成人综合电影| a国产在线视频| 日韩精品欧美激情| 中文字幕一区在线播放| 26uuu亚洲| 黄色aaa级片| 国产精品成人av| 97超级碰碰| 9999在线视频| 亚洲欧洲国产精品| 亚洲在线精品视频| 综合久久久久久| 国产性猛交96| 鲁大师成人一区二区三区| 日韩videos| www.久久久.com| 久久久欧美一区二区| 天堂在线中文| 欧美性高清videossexo| 国产高潮流白浆| 成人国产一区二区三区精品| 国产老熟妇精品观看| 久久综合亚洲| 3d精品h动漫啪啪一区二区| av3级在线| 在线观看国产欧美| 国产夫妻性生活视频| 午夜精品久久久久久久久久久| 亚洲av无码一区二区三区人| 精品中文av资源站在线观看| 99色这里只有精品| 成人嘿咻视频免费看| 亚洲综合小说区| 涩涩视频在线播放| 精品国产欧美成人夜夜嗨| 亚洲第一天堂影院| 在线观看日韩av先锋影音电影院| 农村黄色一级片| 91香蕉视频污| 天天爽夜夜爽视频| 久久亚洲电影| 日韩中文字幕在线不卡| 蜜臀av免费一区二区三区| 成人深夜直播免费观看| 久久久男人天堂| 日韩一区二区三区在线播放| 五月婷婷激情在线| 欧美日本韩国一区二区三区视频 | 日韩欧美黄色动漫| www.xxxx日本| 久久综合资源网| 国产探花在线观看视频| 久久精品日产第一区二区 | 亚洲人成高清| 四虎免费在线观看视频| 中文字幕视频精品一区二区三区| 国产精品成人一区二区| 国内在线视频| 久久久国产精品x99av| 日韩av成人| 精品国产乱码久久久久久浪潮 | 亚洲电影观看| 欧美日韩成人在线观看| 色三级在线观看| av在线播放不卡| 欧美在线观看网站| 国产福利视频在线| 欲色天天网综合久久| 人妻无码中文字幕免费视频蜜桃| 欧美日韩午夜精品| 中文字幕xxxx| 色综合久久六月婷婷中文字幕| 国产亚洲精品码| 亚洲精品免费在线| 欧美肥妇bbwbbw| 中文在线一区二区| 亚洲女优在线观看| 久久这里只有精品6| 亚洲香蕉中文网| 成人一级视频在线观看| 永久av免费在线观看| 精品一区二区久久| 青青草久久伊人| 国产一区二区三区在线观看免费| 中文字幕国产免费| 日本vs亚洲vs韩国一区三区二区| 国产一区二区视频免费在线观看| 日韩午夜av| 日本久久久精品视频| 国产美女诱惑一区二区| av免费观看网| 亚洲一区日韩| 欧美日韩中文在线视频| 免费视频一区| 999在线免费视频| 日本午夜精品视频在线观看| 天天天干夜夜夜操| 日韩国产欧美三级| 91欧美视频在线| 久草中文在线观看| 亚洲综合成人网| 精品午夜福利在线观看| 亚洲午夜国产一区99re久久| 国产亚洲精品av| 天天色综合天天| 91在线视频免费播放| 欧美亚洲动漫精品| 一级片aaaa| 欧美不卡一二三| 香蕉视频黄在线观看| 亚洲欧美在线看| 一广人看www在线观看免费视频| 久久久久999| 国产白丝在线观看| 青青久久av北条麻妃海外网| 91精品国产经典在线观看| 国产在线观看精品一区二区三区| 精品视频在线播放一区二区三区 | 国产人妖ts一区二区| 久久国产精品久久| 国产一区二区三区四区大秀| 亚洲一区综合| 伊人成年综合电影网| 男人揉女人奶房视频60分| 美国毛片一区二区三区| 国产大学生av| 久久精品视频一区二区| 国产老头老太做爰视频| 红桃视频成人在线观看| 中文字幕黄色av| 精品国产乱码久久久久久老虎| 免费成人av电影| 欧美另类高清videos| 午夜欧美巨大性欧美巨大 | 中文字幕第88页| 99热免费精品在线观看| 人人爽人人av| 成人激情校园春色| 日本理论中文字幕| 亚洲在线视频免费观看| 日本中文字幕久久| 精品少妇一区二区三区在线视频| 久草视频视频在线播放| 欧美精品日韩三级| 综合另类专区| 99在线高清视频在线播放| 国产成人黄色| 国产乱人伦精品一区二区三区| 爽好久久久欧美精品| 风韵丰满熟妇啪啪区老熟熟女| 国产欧美一区二区精品性色超碰| 久久国产露脸精品国产| 欧美午夜精品久久久久久超碰| 国产香蕉在线观看| 日韩亚洲欧美成人| 日韩大尺度黄色| 国产精品我不卡| 国产精品99久久久久久动医院| 日韩久久一级片| www.一区二区| 麻豆91精品91久久久| 欧美精三区欧美精三区| 欧美日韩国产中文字幕在线| 久久91亚洲精品中文字幕| 男女啪啪999亚洲精品| 欧洲一区二区在线| 亚洲视频1区| 天天躁日日躁狠狠躁av麻豆男男| 亚洲色图欧美偷拍| 又污又黄的网站| 亚洲视频综合网| gay欧美网站| 国外成人在线视频网站| 午夜精品久久久久99热蜜桃导演| 手机免费av片| 国产精品美女久久久久久2018| 中文字幕黄色片| 国产午夜精品久久久 | 欧美一区二区免费在线观看| 91成人在线精品视频| 99国精产品一二二线| 久久久国产精品| www.久久av.com| 1000部国产精品成人观看| 中文字幕免费播放| 国产亚洲xxx| 97精品国产99久久久久久免费| 蜜桃av色综合| 久久尤物视频| 成人小视频免费看| 欧美唯美清纯偷拍| √新版天堂资源在线资源| 国产欧美一区二区三区久久人妖| 日韩中文首页| 8x8x成人免费视频| 亚洲欧美视频在线观看视频| 国产伦精品一区二区三区免.费| 日韩中文字幕视频在线| av日韩久久| 欧美一级爱爱视频| 波多野结衣在线aⅴ中文字幕不卡| 日本三级理论片| 亚洲欧美日本另类| 日本h片久久| 日本特级黄色大片| 国产盗摄精品一区二区三区在线| 国产在线视频卡一卡二| 亚洲国产精品电影在线观看| 亚洲最大网站| 亚洲人体一区| 国产精品99久久久久久似苏梦涵| 久草资源在线视频| 精品视频偷偷看在线观看| 丝袜美腿诱惑一区二区三区| 亚洲三区在线| 国产aⅴ综合色| 人妻 日韩精品 中文字幕| 国产午夜精品视频| 99久久久国产| 无码播放一区二区三区| 国产欧美久久久精品影院| 国产精品人人爽| 性色av一区二区三区免费 | 亚洲视屏在线观看| 色阁综合伊人av| 亚洲电影一区| 欧美日韩一区二区在线免费观看 | 亚洲欧洲午夜一线一品| 日韩欧国产精品一区综合无码| 91网站在线观看免费| 久久天堂av综合合色蜜桃网| 136福利视频导航| **欧美日韩vr在线| 欧美国产偷国产精品三区| 久久久久亚洲AV成人网人人小说| 色国产精品一区在线观看| 黄色网在线免费观看| 极品尤物一区二区三区| 久久av老司机精品网站导航| 日本五十熟hd丰满| 日韩在线观看精品| 一本久久青青| 中文字幕无人区二|