AOP with Spring Framework
Spring Framework的一个关键组件是Aspect oriented programming (AOP)框架。 面向方面编程需要将程序逻辑分解为称为所谓关注点的不同部分。 跨越应用程序多个点的功能称为cross-cutting concerns ,这些跨领域问题在概念上与应用程序的业务逻辑分开。 有许多常见的好例子,如日志记录,审计,声明式事务,安全性,缓存等。
OOP中模块化的关键单元是类,而在AOP中,模块化单元是方面。 依赖注入可以帮助您将应用程序对象相互分离,AOP可以帮助您将交叉问题与它们所影响的对象分离。 AOP就像Perl,.NET,Java等编程语言中的触发器。
Spring AOP模块提供拦截器来拦截应用程序。 例如,执行方法时,可以在方法执行之前或之后添加额外的功能。
AOP术语
在我们开始使用AOP之前,让我们熟悉AOP概念和术语。 这些术语并非特定于Spring,而是与AOP相关。
Sr.No | 条款和说明 |
---|---|
1 | Aspect 这是一个模块,它有一组提供交叉要求的API。 例如,日志记录模块将被称为AOP方面以进行日志记录。 根据要求,应用程序可以具有任意数量的方面。 |
2 | Join point 这代表了您可以插入AOP方面的应用程序中的一个点。 您还可以说,它是应用程序中使用Spring AOP框架执行操作的实际位置。 |
3 | Advice 这是在方法执行之前或之后要采取的实际操作。 这是Spring AOP框架在程序执行期间调用的实际代码段。 |
4 | Pointcut 这是一组应该执行建议的一个或多个连接点。 您可以使用表达式或模式指定切入点,我们将在AOP示例中看到。 |
5 | Introduction 介绍允许您向现有类添加新方法或属性。 |
6 | Target object 由一个或多个方面建议的对象。 此对象始终是代理对象,也称为建议对象。 |
7 | Weaving 编织是将方面与其他应用程序类型或对象链接以创建建议对象的过程。 这可以在编译时,加载时或运行时完成。 |
建议类型
Spring方面可以使用如下提到的五种建议 -
Sr.No | 建议和说明 |
---|---|
1 | before 在方法执行之前运行建议。 |
2 | after 无论结果如何,在方法执行后运行建议。 |
3 | after-returning 仅在方法成功完成时,在方法执行后运行建议。 |
4 | after-throwing 仅在方法通过抛出异常退出时才在方法执行后运行建议。 |
5 | around 在调用建议方法之前和之后运行建议。 |
自定义方面的实施
Spring支持@AspectJ annotation style方法和schema-based方法来实现自定义方面。 以下各节详细介绍了这两种方法。
Sr.No | 方法和描述 |
---|---|
1 | 基于XML Schema 使用常规类以及基于XML的配置来实现方面。 |
2 | @AspectJ基于 @AspectJ指的是将方面声明为使用Java 5注释注释的常规Java类的样式。 |