Spring @Async 方法被执行但被阻塞

Spring @Async method gets executed but is blocking

提问人:mazi 提问时间:11/4/2023 更新时间:11/5/2023 访问量:28

问:

我在我的配置中启用了异步:

@Configuration
@EnableAsync
public class ApplicationConfiguration {
    //additional configurations
}

我有一个测试类,它有一个@Async测试方法,需要几秒钟:

@Async
    public static void asyncTest() {
        System.out.println("* * * * * * ASYNC TEST 1");
        new BigInteger(9999, 5, new Random());
        System.out.println("* * * * * * ASYNC TEST 2");
    }

在调用终结点时,我调用此方法。该方法被执行,但阻止了所有内容。 我的目标是立即响应客户端并异步执行一个持久的方法,但即使使用我的测试设置,我也无法让它工作。感谢您的任何提示! 带有 maven 和 servlet-api 3.0.1 的 Spring 1.5.1 servlet。

Java spring-boot 异步

评论


答:

1赞 vladtkachuk 11/4/2023 #1

注释的方法不得,必须放置在 Spring(或 @Service等)中。@Asyncstatic@Component

这个问题的答案中有更多细节: @Async Spring 注解不起作用

0赞 mazi 11/5/2023 #2

用公认的答案解决了它,并且:在通过@Autowired注入我的测试类(其中包含 asyncTest 方法)后,实例仍然是 null。这是因为我使用了 Servlet,并且还必须@Autowire Servlet。 这有帮助: servlet 中的自动布线