gpt4 book ai didi

java - 依赖jar中的异步注释,不启动新线程

转载 作者:行者123 更新时间:2023-12-03 13:09:22 26 4
gpt4 key购买 nike

我在依赖 jar 中有一个类,它有一个用 Spring @Async 注释的方法我希望这个方法应该在另一个线程中异步执行。

使用这个类,我在我的父项目中创建了一个 bean,并将它连接到我的类,它有 @Service注解。在那个类中,我调用了一个具有 @Async 的方法注释,但正如我所说,该方法不会在另一个线程中执行。

我怎样才能做到这一点?

这是代码。

这是我的接口(interface)类:

public interface RequestLoggerService {

@Async
void log(HttpServletRequest request, String serviceName, String requestIdentifier, String message, boolean successful);
}

这是实现类:
public class RequestLoggerServiceImpl implements RequestLoggerService {

private static Logger logger = Logger.getLogger(RequestLoggerServiceImpl.class);

private RequestLoggerDao requestLogger;

@Override
public void log(HttpServletRequest request, String serviceName, String requestIdentifier, String message, boolean successful) {
logRequest(request, serviceName, request.getRequestURI().substring(request.getRequestURI().lastIndexOf("/") + 1), requestIdentifier, message, successful);
}
}

这两个类被打包在一个 jar 中,作为我父项目中使用的依赖项。我使用这个类在父项目中创建一个 bean:
<bean id="requestLoggerService" class="com.xyz.service.RequestLoggerServiceImpl">
<property name="requestLogger" ref="requestLoggerDao" />
</bean>

然后这个 bean 会自动连接到我的 @Controller 中。注释类:
public class ActionsController {

@Autowired
private RequestLoggerService requestLogger;
}

最佳答案

我按照@BretC 的说明找到了解决方案。问题是我正在实例化 RequestLoggerService bean 通过 XML 配置,但使用注解 @EnableAsync 来启用 @Async 注解发现。

这不能完成,要么我需要使用注释驱动的 bean 创建,要么在 XML 配置中启用异步任务。

关于java - 依赖jar中的异步注释,不启动新线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40935414/

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