我试图在我的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"/>