2024-12-18  阅读(69)
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/1658668719

回答

在 Spring 中@Async 表示执行异步操作,但是使用了它并不一定会让方法异步执行,因为它依赖于 Spring AOP 代理机制,所以它需要满足几个条件:

  1. 启用异步支持。我们需要在配置类上面标注 @EnableAsync,告诉 Spring 容器启用异步功能。
  2. 方法必须为 public,且不能被同一个类内部直接调用。因为 @Async 依赖 Spring AOP 代理机制。
  3. @Async 的方法必须为 void 或者 Future

详解

Spring 中 @Async 注解基于 Spring AOP 实现异步调用,运行时会创建一个代理对象,当方法被调用时,代理会将方法交给线程池执行,而不是在主线程中执行。

一、启用异步支持

异步执行在 Spring 中并不是默认开启的,所以要启用它就必须在配置类或者主启动类上添加 @EnableAsync 注解,显式启用异步支持。@EnableAsync 就是告诉 Spring 容器,要它去扫描和识别 @Async 注解的方法。

@Configuration
@EnableAsync
public class AppConfig {
    // 启用异步支持
}

二、代理机制要求