动态代理的代理类是动态生成的,不是我们直接写好的
动态代理分为两大类:基于接口的动态代理,基于类的动态代理
1,基于接口--JDK动态代理【我们在这里使用】
2,基于类:cglib
3,Java字节码实现:javasist
需要了解两个类:Proxy :代理,InvocatioHandler:调用处理程序
InvocationHandler是由代理实例调用处理程序实现的接口。
每个代理实例都有一个关联的调用处理程序,当在代理实例上调用方法时,方法调用将被编码并分派到其调用处理程序的invoke方法。
proxy提供了创建动态代理类和实例的静态方法,它也是由这些方法创建的所有动态代理类的超类。
动态代理的好处
可以使真实角色的操作更加纯粹,不用去关注一些公共的业务
公共业务交给代理角色,实现了业务的分工
公共业务发生扩展的时候,方便集中管理
一个动态代理类代理的是一个接口,一般就是对应的一类业务
一个动态代理类可以代理多个类,只要时实现了同一个接口即可
代码
1 package com.nic.PeopleService; 2 3 public interface PeopleService { 4 public void add(); 5 public void delete(); 6 public void update(); 7 public void query(); 8 }