动态代理:
动态的创建一个代理类出来,创建这个代理类的实例对象,
在这个代理类里面,所有方法的调用,都是先走代理类的对象,它负责做一些代码上的增强,再去调用你原本的那个类中的方法。
比如你对一批类和它们的方法做了一个切面,定义好了要在这些类的方法里增强的代码,spring必然要对那些类生成动态代理,在动态代理中执行你定义的一些增强代码;
1、如果你的那批需要进行代理的类,是实现了某个接口的,那么Spring AOP就会使用jdk动态代理的方式,来生成一个跟你实现同样接口的代理类,构造一个实例对象出来;
2、如果你的那批需要进行代理的类,没有实现接口,就会改用cglib的方式来生成动态代理,它是生成你的类的一个子类,覆盖你的一些方法,在方法里加入增强的代码。