Spring Boot @Async 异步方法详解 Spring Boot @Async 异步方法是 Spring Boot 框架中的一种异步编程方式,允许开发者在不阻塞主线程的情况下执行高耗时方法。下面将详细介绍 Spring Boot @Async 异步方法的使用和原理。 什么是异步调用 异步调用是指在不阻塞主线程的情况下执行高耗时方法。这种方式可以提高系统的响应速度和吞吐量。 常规异步 常规异步是通过开启新线程实现的。这种方式需要手动创建和管理线程,开发者需要关心线程的生命周期和同步问题。 Spring Boot @Async 异步方法 在 Spring Boot 中启用异步方法需要四个注解: 1. @EnableAsync:开启异步 2. @Component:注册异步组件 3. @Async:标注异步方法 4. @Autowired:注入异步组件 使用 @Async 异步方法 1. 首先在一个 Config 类上标注开启异步 2. 然后创建一个异步的组件类,就跟 Service、Controller 一样一样的,用 Component 标注 3. 在类内创建一个异步方法,打上 Async 标记。这个方法必须是实例方法 4. 然后就跟注入 Service 一样一样的了 异步事务 异步事务在 Async 方法上标注@Transactional 是没用的。在 Async 方法调用的 Service 上标注@Transactional 有效。 异步方法的内部调用 异步方法不支持内部调用,也就是异步方法不能写在需要调用他的类的内部。例如,Class A 有 a,b,c。b 有 Async 标注。此时 a 对 b 的异步调用是失效的。 为什么异步方法必须是实例方法 异步方法必须是实例方法,因为 static 方法不能被 Override。@Async 异步方法的实现原理是通过注入一个代理类到 Bean 中,这个代理继承这个 Bean,需要覆写异步方法并执行。然后这个东西,会被 Spring 放到自己维护的一个队列中,等待线程池读取并执行。 Spring Boot @Async 异步方法是一种方便、高效的异步编程方式,能够提高系统的响应速度和吞吐量。但是,开发者需要了解其使用限制和实现原理,以便更好地使用该技术。

















