在 Spring AOP 切面的 Around 方法中,可以通过 ProceedingJoinPoint 参数来获取方法执行的上下文信息,包括 HttpServletRequest 和 HttpServletResponse 对象。可以按照以下步骤获取 HttpServletResponse 对象:

  1. 在方法参数中添加 HttpServletRequest 和 HttpServletResponse 对象参数。

  2. 在 around 方法中,通过 ProceedingJoinPoint 参数获取 HttpServletRequest 对象。

  3. 调用 proceed() 方法执行被切入的方法,获取返回值。

  4. 在方法返回后,通过 HttpServletResponse 对象参数来对响应进行操作。

下面是一个示例代码:

@Aspect
@Component
public class ResponseAspect {

    @Around("execution(* com.example.controller.*.*(..))"
    public Object around(ProceedingJoinPoint point, HttpServletRequest request, HttpServletResponse response) throws Throwable {
        // 获取HttpServletRequest对象
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

        // 执行被切入的方法
        Object result = point.proceed();

        // 对响应进行操作
        response.setHeader('Access-Control-Allow-Origin', '*');
        response.setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, DELETE');
        response.setHeader('Access-Control-Max-Age', '3600');
        response.setHeader('Access-Control-Allow-Headers', 'x-requested-with');
        response.setContentType('application/json;charset=UTF-8');

        return result;
    }
}
Spring AOP 切面 Around 方法获取 HttpServletResponse 对象

原文地址: https://www.cveoy.top/t/topic/kxP2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录