使用AspectJ spring添加响应标头

时间:2015-12-07 17:19:52

标签: java spring header annotations aop

我试图在我的java应用程序中为所有响应添加响应标头,为此我使用AspectJ。

换句话说,我想要做的是,在返回Response之前(以及在构建它之前)我想添加一个标题响应,所以通过添加@PointCut和@AfterReturning我试着抓住响应以添加标题

问题是我试图调试但它没有达到方面,也许@PointCut执行语法不好?

正在使用@AfterReturning帮助我?

谢谢你的帮助,杰伊

这是我的代码:

以这种方式返回对客户的回复:

public Response getCustomer(...) {
...
return Response.ok(costumers).build();
}

Aspect类:

@Aspect
public class MyAspect {


    @AfterReturning(
            pointcut="execution(public Response *.*(..)",
            returning="response")
    public void updateStatisticsResponseHeader(JoinPoint joinPoint, Object response) {

        long longEndTime = System.currentTimeMillis();


        Response resp1 = (Response) response;
        Object startTime  = resp1.getMetadata().get("start-time");
        long longStartTime = (long)startTime;
        long totalTime = longEndTime - longStartTime;

        Response.ResponseBuilder responseBuilder = Response.fromResponse(resp1);
        responseBuilder.header("total-time",String.valueOf(totalTime));

        responseBuilder.build();

    }

}

beans.xml中:

<bean id="MyAspect" class="com.project.aspect.MyAspect"/>

0 个答案:

没有答案