CGLIB eller ASM - add interceptor to instance at runtime
Hi,jeg har en class:
-----------------
public class Foo {
private String fooValue;
// getters and setters
}
Nu har jeg en instance af denne class og invoker en methode:
-----------
Foo foo = new Foo(); // uden cglib enhancer
myInstanceTransformer.addMethodInterceptorToInstance(foo, new MethodInterceptor(){
Object intercept( Object proxy, Method method, MethodProxy fastMethod, Object args[] )throws Throwable{
System.out.println("foo bar abc");
}
});
foo.getFoo(); // output: foo bar abc
-----------
Spørgsmål:
Er det muligt at forandre en class @ runtime i det man adder fields og forandrer methods - uden proxy?
Hvis ja: Hvordan kan jeg så ovenstående code til at virke med CGLIB (hvis det ikke er muligt med CGLIB, så: hvordan kan jeg løse det med ASM)?
Mange tak for svar!
Med venlig hilsen
KernelX