gpt4 book ai didi

java - 为什么我的方法不是异步的?

转载 作者:行者123 更新时间:2023-12-01 18:32:44 24 4
gpt4 key购买 nike

我正在尝试使用Spring 3.0提供的@Async注释使方法异步

我已经完成了以下操作

在我的module-context.xml中包含以下内容

<task:executor id="initiateContactCreation" pool-size="2-10" queue-capacity="5"/>
<task:annotation-driven executor="initiateContactCreation" />

使用@Async注释的方法

@Async
private void initiateContactCreation(String fromUserId, List<String> toUsers){
logger.info("Inside Async method for contact creation");
ContactDetails contactDetails = new ContactDetails();
contactDetails.setUserId(fromUserId);
contactDetails.setContactEmailIds(toUsers.toArray(new String[toUsers.size()]));
this.contactsAndDirSvc.addContact(contactDetails);
logger.info("Returning from Async method for contact creation");
}

但我发现该方法不会立即返回控制权。

我的记录器显示从 initiateContactCreation 记录,然后从 addContact 记录(PS。执行此方法需要时间,我不希望它同步执行),然后从该方法记录我正在调用initiateContactCreation

我做错了什么?

最佳答案

由于此方法是私有(private)的,因此我假设您使用“this”引用从此类中调用此方法。 Spring 无法代理类内进行的调用。该调用必须来自类的外部,以便 Spring 可以拦截并应用它所做的注释和其他代理内容。

关于java - 为什么我的方法不是异步的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23394999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com