java - 在 MethodInterceptor 中获取目标

标签 java guice aop aopalliance

如何在拦截器中获取目标对象?

   bindInterceptor(subclassesOf(A.class), any(), new MethodInterceptor() {
        @Override
        public Object invoke(MethodInvocation methodInvocation) throws Throwable {
            A a = getTarget();    //how?
            return methodInvocation.proceed();
        }
    });

UPD 实际上,有基于反射的解决方案,但希望还有其他解决方案..

private static Object getTarget(MethodInvocation methodInvocation) throws NoSuchFieldException, IllegalAccessException {
    return getFieldValue(methodInvocation, "proxy");
}

private static Object getFieldValue(Object obj, String field) throws NoSuchFieldException, IllegalAccessException {
    Field f = obj.getClass().getDeclaredField(field);
    f.setAccessible(true);
    return f.get(obj);
}

最佳答案

不就是methodInitation.getThis()吗?

关于java - 在 MethodInterceptor 中获取目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6001305/

相关文章:

java - Tomcat 6.0 应用程序中的内存泄漏

java - 在网络服务中返回多个值

java - Tomcat 启动期间出错 - com.google.inject.internal.util.$ComputationException : java. lang.ArrayIndexOutOfBoundsException

java - Guice 中一个类的多个提供者

c# - 选择 IoC 框架(用于 DI 和 AOP)

java - Maven : compile aspectj project containing Java 1. 6 源码

java - 为什么 dropwizard 配置不起作用?

java - JPA 具有延迟加载字段的对象集合

java - 注入(inject)命名的 Guice 单例

c# - 如何处理 ASP.NET MVC 3 应用程序中的横切关注点?