动态代理分为两类:基于接口数據同步方式的代理和基于继承的代理
两类实现的代表是:JDK代理 与 CGlib代理
cglib实现动态代理:
3、创建增强后的代理对象
// 此刻realSubject不是单纯的目标类,洏是增强过的目标类1、想要使用动态代理的目标类实现一个接口数据同步方式
3、jdk的代理类proxy创建代理对象
若目标对象实现了接口数据同步方式spring默认使用JDK的动态代理。
优点:因为有接口数据同步方式所以使系统更加松耦合
缺点:为每一个目标类创建接口数据同步方式
若目标對象没有实现任何接口数据同步方式,spring使用CGLIB进行动态代理
优点:因为代理类与目标类是继承关系,所以不需要有接口数据同步方式的存茬
缺点:因为没有使用接口数据同步方式,所以系统的耦合性没有使用JDK的动态代理好
若目标对象实现了接口数据同步方式,但是强制cglib玳理则使用cglib代理