文章目录
什么是AOP?
AOP (Aspect Oriented Programing) 称为:面向切面编程,它是一种编程思想。在程序运行的时候,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。
基于代理思想,对原来目标对象,创建代理对象,在不修改原对象代码情况下,对原有业务方法进行增强 !
AOP和代理模式
代理模式:分为静态代理、JDK动态代理、cglib代理
1.静态代理
代理类和被代理类实现共同的接口(或继承),代理类中存有指向被代理类的引用,实际执行时通过调用代理类的方法、实际执行的是被代理类的方法。
2.jdk动态代理
必须有接口和实现类(目标类),通过工具类Proxy生产接口对应的代理类,从而对目标类进行增强。
3.Cglib代理
Cglib代理生成的代理类是目标类的子类,所以目标类不能使用final修饰。
AOP
Spring AOP通过代理的方式,对目标类进行增强。
Spring aop底层默认使用JDK动态代理(必须有接口),通过配置可以修改成cglib代理。
静态代理:需要手动创建代理类,在new 代理类,获得代理实例
1.目标类: class 目标类 implements 接口{ 方法1(); 方法2(); }
2.代理类: class 代理类 implements 接口{