简介

AOP(面向切面编程,Aspect-Oriented Programming)是一种新的方法论,是对OOP(面向对象编程,Object-Oriented Programming)的补充。
一个系统可以看成是由若干关注点组成的,这些关注点分为:核心关注点 和 横切关注点。一个核心关注点对应一个业务逻辑。而横切关注点是对 所有业务模块共有需求的 抽取
AOP是将横切关注点模块化成切面,然后在运行时,将切面织入到业务方法。因此,在AOP中主要编程对象是切面(aspect)


AOP术语


使用切面

在Spring中有两种方式使用切面:


基于AspectJ注解的方式

1,使用AspectJ注解
2,关于切面
3,关于通知

例1-使用AspectJ注解以及通过JoinPoint参数访问连接点信息:
spring-aop-2.png
例2-在返回通知中访问连接点的返回值:
spring-aop-3.png
例3-在异常通知中,只关注特定的异常(本例中是ArithmeticException):
spring-aop-4.png
例4-环绕通知示例:
spring-aop-5.png

4,关于AspectJ切入点表达式
5,关于切面的优先级
6,重用切入点定义

例1-通过@Pointcut注解将切入点声明成方法:
spring-aop-7.png


基于XML的配置声明切面

1,概述
2,基于XML---声明切面
3,基于XML---声明切入点
4,基于XML---声明通知

例子:
spring-aop-8.png