djcproxy - 动态 Java 类代理


Apache
跨平台
Java

软件简介

djcproxy 是一个小型的 Java 库,实现动态 Java
类代理。使用它可以在运行时对已存在的对象创建代理对象,用来创建面向方面特性。例如度量某个方法的执行时间,修改方法行为,记录方法执行等等。

完整示例代码:

protected static class A {
    public A() {
    }

    public int method() {
        return 1;
    }
}

private class Interceptor implements MethodInterceptor {

    @Override
    public Object intercept(Object obj, Method method, Object[] args)
            throws Exception {
        if (method.getName().equals("toString")) {
            return "interceptedToString";
        }
        return 0;
    }

}

@Test
public void given_Object_when_CreatingSource_then_GettingInterceptorResult()
        throws Exception {

    A a = new A();
    ProxyFactory<A> factory = new ProxyFactory<>();
    A s = factory.create(a, new Interceptor());
    Assert.assertEquals("interceptedToString", s.toString());
    Assert.assertEquals(0, s.method());
}