Spring 框架中面向切面编程是关键组件中的一个。面向切面变成需要把程序分解成不同的部分,这个就是所谓的关注点。跨越一个程序多个点的函数称作关注点,这些横切关注点在概念上与应用程序的业务逻辑分离。日志、审计、声明式事务、安全性、高速缓存方面有很多常见的好例子。
OOP中模块化的关键单元是类,而在AOP中,模块化单元是切面。依赖注入帮助你将应用程序对象彼此解耦,AOP帮助你将横切关注点与它们影响的对象解耦。AOP是就像一些编程语言中的触发器,如Perl,.net,java,和其他。
Spring AOP模块提供拦截器来拦截应用程序。例如,当执行一个方法时,您可以在方法执行之前或之后添加额外的功能。
AOP Terminologies
AOP术语:在我们使用AOP之前,先熟悉AOP的概念和术语。这些术语不是针对Spring来说的,而是和AOP相关。
| No | Terms | Description |
|---|---|---|
| 1 | Aspect | 这是一个提供横切需求的API模块。比如,日志模块应该叫做AOP日志切面。一个应用程序根据需求来说可以有很多的切面。 |
| 2 | Join point | 这表示应用程序中可以插入AOP方面的一个点。也可以说,它是在应用程序中使用Spring AOP框架进行操作的实际位置。 |
| 3 | Advice | 这是在方法执行之前或之后要采取的实际操作。这是一个实际的代码,它是在Spring AOP框架下在程序执行过程中调用的。 |
| 4 | Pointcut | 这是一组一个或多个能够执行实际操作的点。你可以使用某种表达和模式指定这些点,正如我们的例子中一样。 |
| 5 | Introduction | 允许在存在的类中添加新的方法和属性 |
| 6 | Target object | 目标对象被一个或多个对象通知,这个对象通常会被当作代理对象,也被称作被建议的对象。 |
| 7 | Weaving | Weaving 把切面连接到其它的应用程序类型或者对象上,并创建一个被通知的对象。这些可以在编译时,类加载时和运行时完成。 |
Types of Advice
Spring 容器可以工作在五种通知模式:
| No | Advice | Description |
|---|---|---|
| 1 | before | 在一个方法执行之前运行你要运行的实际操作 |
| 2 | after | 在一个方法执行之后运行你要运行的实际操作 |
| 3 | after-returning | 仅仅在一个方法执行成功之后运行你要运行的实际操作 |
| 4 | after-throwing | 仅仅在一个方法执行抛出异常的时候才执行你要执行的实际操作 |
| 5 | around | 在一个方法执行前后运行你要执行的实际操作 |
Custom Aspects Implementation
自定义切面的实现:Spring 支持 @AspectJ annotation style 的方法和基于模式的方法来实现自定义切面。这两种方法已经在下面两个子节进行了详细解释。
| No | Approach | Description |
|---|---|---|
| 1 | XML Schema based | 可以使用规则的类以及XML配置的形式实现切面 |
| 2 | @AspectJ based | @AspectJ 引用一种声明方面的风格作为带有 Java 5 注释的常规 Java 类注释。 |

本文介绍了Spring框架中的面向切面编程(AOP)概念及其关键组件。文章详细解释了AOP的基本术语,包括切面、连接点、通知等,并讨论了如何通过Spring AOP模块在方法执行前后增加额外功能。

被折叠的 条评论
为什么被折叠?



