学了下java的代理技术,java本身提供的2种代理,只能对目标对象为实现某一接口的类进行代理,如果目标对象没有实现任何接口,可以使用cglib
public class CglibFactory implements MethodInterceptor{
this.target = target;
//cglib创建的代理对象,其实就是继承了被代理的目标对象,覆盖其中的所有非final方法,覆盖方法时会添加一些拦截代码
}
public class Target {
public void m1(){
System.out.println("this is method:m1");
}
public void m2(String str){
System.out.println("this is method:m2,with parameter:"+str);
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
CglibFactory factory = new CglibFactory();
Target target = factory.create(new Target());
target.m2("m2");
}
}