java - @Async @Aspect @AfterReturnung。我的方法有 HttpServletRequest 对象作为方法参数,但能够访问它我的 aop 方法

标签 java spring servlets asynchronous aspect

我正在尝试以异步模式通过 aop 记录 HttpServletRequest 内容。实现中切入点的方法将 HttpServletRequest 作为方法参数。我无法在异步模式下访问它,尽管代码在没有 @Async 注释的情况下可以正常工作。

@Async
@AfterReturning(pointcut = "execution(* com.web.dto.util.response.impl.ResponseImpl.prepareResponseDTO(..))", returning = "object")
    public void logSearchJSON(JoinPoint joinPoint, final Object object) {
        try {
            List<Object> objects = getActivityParams(joinPoint);

            UserActivity userPersonalization = null;
            HttpServletRequest httpServletRequest = (HttpServletRequest) objects.get(0);
            if (httpServletRequest.getRequestURI().contains(UserActivityConstant.filter)) 

httpServletRequest.getRequestURI() returns null.

没有 @Async 注释它工作正常

最佳答案

您是否正确声明了任务执行器?

您可以在 Spring 上下文中以这种方式执行此操作:

<task:annotation-driven executor="TaskExecutor"/>
<task:executor id="TaskExecutor"
                   pool-size="2-5"
                   queue-capacity="50"
                   keep-alive="120"
                   rejection-policy="CALLER_RUNS"/>

您也可以在 @Configuration 类中执行此操作。

关于java - @Async @Aspect @AfterReturnung。我的方法有 HttpServletRequest 对象作为方法参数,但能够访问它我的 aop 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35325143/

相关文章:

google-app-engine - 如何将过滤器关联到 Google App Engine 的 app.yaml 中的 servlet?

javascript - 将 var 从 javascript 传递到 servlet

java - 关闭JFrame前如何提示用户确认退出

java - 如何使用 ZipEntry 在 Zip 中添加重复文件

Spring Retry 与 Hystrix

java - 如何避免在 java spring 中使用同一 session 并发访问 Controller 方法?

java - 如何获取 servlet 资源的文件名?

java - onActivityResult 请求代码 Facebook SDK

java - 要么重新中断此方法,要么重新抛出声纳中的“InterruptedException 问题”

java - 在Java注释处理器中获取数组类型