AOP面向切面编程
1,AOP介绍
什么是AOP?
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期"动态代理"实现程序功能的统一维护的一种技术。AOP是OOP(面向对象编程)的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。面向横向机制,取代了传统的纵向继承体系重复性代码
经典应用:性能监听,事务管理,安全检查,缓存,日志等。
springAOP在运行期间通过代理方式向目标类植入增强代码
AOP实现原理:
AOP底层将采用代理机制进行实现
常见组合,'①接口+实现类:spring采用jdk的动态代理Proxy;②spring采用cglib字节码增强
AOP术语(必须掌握):
2,代理
①手动代理
JDK动态代理—手动代理,对“装饰者”设计模式简化。使用前提,必须有接口。
目标类(接口+实现类)–>切面类(A:myAspect)–>工厂类,生成代理类(Proxy)–>测试(如下)
cglib字节码增强—手动代理
没有接口,只有实现类,采用字节码增强框架cglib,在运行时,创建目标类的子类,从而对目标类进行增强;
必须导入jar包:spring-core已经整合了核心(cglib)+依赖(asm),下面由spring-core-3.2.0.RELEASE.jar解压得到哦(这里说一点,jar包其实就相当于一个压缩包),因此我们只需要导入一一个spring-core核心包即可
实例:第一,和上面相差一个接口。第二,第四个参数,就相当于执行了第二遍
这里介绍前提知识
AOP联盟为通知A