作者菜鸡,在项目中遇见需要AOP的部分,又返回来,细学。以下是我的理解,笔记:
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理(Proxy)实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
动态代理技术,在运行期间,对目标对象的方法进行增强,代理对象同名方法内可以执行原有逻辑的同时嵌入执行其他增强逻辑或其他对象的方法
具体实现:
需有的几个对象:目标对象,增强对象(内部提供增强方法),目标对象的代理对象
目的:对实现某接口的impl里的方法(目标对象),进行增强(增强对象的增强方法)
问题:1-》如果没有筛选,就将全部都可以增强了
2-》怎么获取到我们的增强对象?将增强类存入spring容器里:即放入yml中,用bean存入(这就很底层了)
切点表达式:
切点表达式是配置要对哪些连接点(哪些类的哪些方法)进行通知的增强,语法如下:
executioa ( [访问修饰符]返回值类型包名.类名.方法名(参数) )
其中,
●访问修饰符可以省略不写;
●返回值类型、某一级包名、 类名、方法名可以使用*表示任意;
●包名与类名之间使用单点 ”.“表示该包下的类,使用双点”..“表示该包及其子包下的类;
●参数列表可以使用两个点 “..“表示任意参数。
五种通知类型:
先了解一下
现在将注解方式配置Aop:
注解方式,也是按照xml方式的简化手敲版,所以,xml需要什么,注解也就需要什么:
简要来讲,就两步:一步:在增强类上加@Aspect,二步:增强的方法上加五种通知的对应类型注解及要增强哪些类(切点表达式)