2
所以我有一個場景,我想在使用球衣編寫的REST風格的Web服務中訪問上下文變量。如何訪問aspectj中的私有變量
@Path("hello")
public class Hello {
@Context
private UriInfo context;
@GET
@Produces("text/html")
public String getHtml(@Context Request request, @Context HttpServletRequest requestss) {
...
context.getBaseUri();
...
}
在使用@Around
切入點,我可以看到參數是ARGS我的方面:[[email protected],[email protected]]
,這樣我就可以輕鬆地訪問Request對象。
我的方面如下:
@Pointcut("execution(* *.getHtml(..))")
public void methodCall() {}
@Around("methodCall()")
public Object aroundMethodCall(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("AROUND" + pjp.getSignature());
System.out.println("ARGS: "+ Arrays.toString(pjp.getArgs()));
return pjp.proceed();
}
我想訪問我的方面context
變量(記錄它)。在我的方面getThis()方法返回Hello類,但上下文字段是私人的。可能嗎 ?我正在使用加載時間編織。
你可以添加一個公共'的getContext()'方法來你的Hello類?否則,無論如何,在Java 7中,我會看[MethodHandle](http://docs.oracle.com/javase/7/docs/api/java/lang/invoke/MethodHandle.html)。 –
@ElliottFrisch nope我不能,這個想法是沒有針對澤西島應用程序的入侵式日誌記錄(不是我寫的) – Darek
你在Java 7上嗎? –