Spring AOP 简单例子及说明

在软件开发中,散布于应用中多处的功能被称为横切关注点(crosscuttingconcern)。
通常来讲,这些横切关注点从概念上是与应用的业务逻辑相分离的(但是往往会直接嵌入到应用的业务逻辑之中)。
把这些横切关注点与业务逻辑相分离正是面向切面编程(AOP)所要解决的问题
横切关注点可以被描述为影响应用多处的功能,横切关注点可以被模块化为特殊的类,这些类被称为切面(aspect)

什么是面向切面编程
这里写图片描述
图4.1展现了一个被划分为模块的典型应用。每个模块的核心功能都是为特定业务领域提供服务,但是这些模块都需要类似的辅助功能,例如安全和事务管理
如果要重用通用功能的话,最常见的面向对象技术是继承(inheritance)或委托(delegation)。但是,如果在整个应用中都使用相同的基类,继承往往会导致一个脆弱的对象体系;而使用委托可能需要对委托对象进行复杂的调用。

切面提供了取代继承和委托的另一种可选方案,而且在很多场景下更清晰简洁。在使用面向切面编程时,我们仍然在一个地方定义通用功能,但是可以通过声明的方式定义这个功能要以何种方式在何处应用,而无需修改受影响的类

AOP术语
通知包含了需要用于多个应用对象的横切(通用功能)行为;
连接点是程序执行过程中能够应用通知的所有点;
切点定义了通知被应用的具体位置(在哪些连接点)。
其中关键的概念是切点定义了哪些连接点会得到通知

例子
定义切面
这里写图片描述
定义更好的切面
这里写图片描述

猜你喜欢

转载自blog.csdn.net/milaobai/article/details/81487266