SpringBoot实战:SpringBoot异步处理注解 @Async

介绍

在现在的Java应用程序中,异步处理是为了提高系统性能和响应速度的手段之一,在SpringBoot@Async 注解被用于声明一个异步的方法,当在调用被 @Async 注解修饰的方法时, Spring 会异步执行这个方法,调用者可以立即继续实行后续的操作,而不用等待该方法完成。尤其是在处理耗时的操作时,例如 文件IO、数据库查询、网络请求等,异步处理是很好的选择。


一、@Async注 解的基本使用

@Async 注解用于标记在方法上,被标记的方法将会在独立的线程中执行。@AsyncSpringBoot提供的一种简便的用于启用异步方法的执行。仅需要在配置类或者主类上添加 @EnableAsync 注解,就可以轻松启用这一功能。

二、代码示例

在项目的 pom,xnl 文件中添加相关依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

在项目的配置类或者主类上 添加 @EnableAsync 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;

@SpringBootApplication
@EnableAsync
public class AsyncApplication {
    public static void main(String[] args) {
        SpringApplication.run(AsyncApplication.class, args);
    }
}

创建异步执行方法:

使用 @Async 注解定义一个异步方法(创建服务类 AsyncService

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

@Service
public class AsyncService {

    @Async
    public void asyncMethod() {
        try {
            Thread.sleep(5000); // 模拟耗时操作
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("异步方法执行完成");
    }
}

调用方法:

创建一个 Controller 用来测试异步执行的方法;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class AsyncController {

    @Autowired
    private AsyncService asyncService;

    @GetMapping("/async")
    public String callAsyncMethod() {
        asyncService.asyncMethod();
        return "异步方法已调用";
    }
}

访问测试接口后,http://localhost:8080/api/async 后可以发现 Controller 立即返回了响应结果,而且 asyncMethod 将在独立的线程中执行,五秒后会在控制台输出 “异步方法执行成功”。


三、应用场景

@Async 注解使用于各种需要异步处理的场景,在这里举例几个常用的场景。

  1. 后台任务处理:WEB 应用中,对于执行时间较长且资源密集的任务,例如邮件发送、报告生成等,可以利用 @Async 注解来实现异步处理机制。这样可以使用户无需长时间登录这些后台任务的完成,即可立即得到响应结果,从而提高用户提要。

  2. 并行处理:在一些大规模数据处理和需要同时多个外部应用程序的情况下,@Async 注解同样能发挥重要作用,通过将任务异步处理,可以明显的提高并行的操作效率,减少总体的处理时间。

  3. 提高吞吐量:可以充分例如多线程资源,提高系统的吞吐量。


四、总结


SpringBoot@Async 注解提供了一种简洁且强大的异步处理方式,通过启用一不支持,可以高效的提高代码执行效率,有助于提升应用系统的性能和响应速度。


原文始发于微信公众号(Java技术前沿):SpringBoot实战:SpringBoot异步处理注解 @Async

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/299685.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!