动态代理JDK
一、JDK动态代理
1、代理模式。概念(JDK)
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。
代理模式:代理模式又叫委托模式,是为某个对象提供一个代理对象,并且由代理对象控制对原对象的访问。代理模式通俗来讲就是我们生活中常见的中介。
常见的动态代理:jdk动态代理、必须有接口
cglib动态代理。生成子类的方式
2、JDK动态代理底层原理
Proxy
invocationHandler
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class MyProxy implements InvocationHandler { public void setTarget(Car target) { this.target = target; } private Car target; public Object getProxy(){ return Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),this); } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("代理"); return method.invoke(target,args); } public static void main(String[] args) { Car car = new Car(); MyProxy myProxy = new MyProxy(); myProxy.setTarget(car); Vehical proxy = (Vehical) myProxy.getProxy(); proxy.getCar(); } static class Car implements Vehical { @Override public void getCar(){ System.out.println("haha"); } } interface Vehical { void getCar(); } }
3、开源框架中jdk动态代理
Spring AOP。声明式事物、mybatis框架。