Spring框架是Java程序员熟知的框架。Spring有两大特性,IOC和AOP。AOP就是我们熟悉的切面编程,和我们今天说的动态代理关系密切。
Java中动态代理有两种方式:Proxy和cglib
1、Proxy
Proxy要求被代理的类必须要继承接口才能实现代理,实现Proxy需要四步
1、定义接口
interface PersonInterface{
public String print(String name);
}
2、定义被代理的类
class Person implements PersonInterface{
public String print(String name) {
System.out.println("my name is "+ name);
return name;
}
}
3、定义代理类
class MyInvokeHandler implements InvocationHandler{
//o就是被代理的对象
Object o;
public MyInvokeHandler(Object o){
this.o = o;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//执行方法前的业务处理
System.out.println("invoke begin");
//执行被代理类的方法,利用反射
Object res = method.invoke(o