以下内容引用自http://wiki.jikexueyuan.com/project/spring/aop-with-spring.html:
Spring框架的一个关键组件是面向方面的编程(AOP)框架。面向方面的编程需要把程序逻辑分解成不同的部分称为所谓的关注点。跨一个应用程序的多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。有各种各样的常见的很好的方面的例子,如日志记录、审计、声明式事务、安全性和缓存等。
在OOP中,关键单元模块是类,而在AOP中单元模块是方面。依赖注入帮助你对应用程序对象相互解耦和AOP可以帮助你从它们所影响的对象中对横切关注点解耦。AOP是像编程语言的触发物,如Perl,Java或者其他。
Spring AOP模块提供拦截器来拦截一个应用程序,例如,当执行一个方法时,你可以在方法执行之前或之后添加额外的功能。
AOP术语
以下为AOP的概念和术语。这些术语不是Spring特有的,而是与AOP有关的。
项 | 说明 |
---|---|
Aspect |
方面 这是一个具有一组提供交叉要求的API的模块。例如,记录模块将被称为AOP方面用于记录。应用程序可以根据需要具有任意数量的方面。 |
Join point |
加入点 这表示您的应用程序中可以插入AOP方面的一点。也可以说,这是应用程序中使用Spring AOP框架采取行动的实际位置。 |
Advice |
忠告 这是在方法执行之前或之后采取的实际操作。这是由Spring AOP框架在程序执行期间调用的实际代码段。 |
Pointcut |
切入点 这是一组一个或多个连接点,其中应该执行建议。您可以使用表达式或模式指定切入点,我们将在AOP示例中看到。 |
Introduction |
介绍 介绍允许您向现有类添加新的方法或属性。 |
Target object |
目标对象 该对象被一个或多个方面通知。该对象将始终是一个代理对象,也称为建议对象。 |
Weaving |
织造 织造是将方面与其他应用程序类型或对象进行链接以创建建议对象的过程。这可以在编译时,加载时间或运行时完成。 |
通知类型
Spring可以提供以下五种建议:
项 | 说明 |
---|---|
before |
前置通知 在方法执行之前运行建议。 |
after |
后置通知 在方法执行后运行建议,无论其结果如何。 |
after-returning |
返回后通知 只有方法成功完成后才能在方法执行后运行建议。 |
after-throwing |
抛出异常后通知 只有在方法通过抛出异常而退出方法执行之后才能运行建议。 |
around |
环绕通知 在调用建议方法之前和之后运行建议。 |
实现自定义方面
Spring支持@AspectJ注解方法和基于模式的(schema-based)方法来实现自定义方面。
参考:
(官方AOP详细文档)https://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html