IOC和AOP是Spring的两大基石,AOP(面向方面编程),也可称为面向切面编程,是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP)。
在进行 OOP 开发时,都是基于对组件(比如类)进行开发,然后对组件进行组合,OOP 最大问题就是无法解耦组件进行开发,比如我们上边举例,而 AOP 就是为了克服这个问题而出现的,它来进行这种耦合的分离。AOP 为开发者提供一种进行横切关注点(比如日志关注点)分离并织入的机制,把横切关注点分离,然后通过某种技术织入到系统中,从而无耦合的完成了我们的功能。
AOP图(1)定义目标接口
(2)定义目标接口实现类
(3)定义切面支持类
(4)在XML中进行配置
切入点使用标签下的配置, expression属性用于定义切入点模式,默认是AspectJ语法,“ execution(* cn.javass..*.*(..))”表示匹配cn.javass包及子包下的任何方法执行。关于expression属性如何配置请点击:expression配置
切面使用标签下的标签配置,其中“ ref”用来引用切面支持类的方法。
前置通知使用标签下的标签来定义, pointcut-ref属性用于引用切入点Bean, 而method用来引用切面通知实现类中的方法,该方法就是通知实现,即在目标类方法执行之前调用的方法。
最终通知使用标签下的标签来定义,切入点除了使用pointcut-ref属性来引用已经存在的切入点,也可以使用pointcut属性来定义,如pointcut="execution(* cn.javass..*.*(..))", method属性同样是指定通知实现,即在目标类方法执行之后调用的方法。
(5)测试运行
(6)输出结果
网友评论