AOP面向切面编程理论

spring aop中的主要概念理解

aspect  切面,切面有切点和通知组成,即包括横切逻辑的定义也包括连接点的定义

pointcut 切点 每个类都拥有多个连接点,可以理解是连接点的集合

joinpoint 连接点,程序执行的某个特定位置,如某个方法调用前后等

weaving  将增强添加到目标类的具体连接点的过程

advice 通知 编写到目标类连接点上的一段代码,就是增强到什么地方?增强什么内容?

target 目标对象 加入aop业务的目标类

aop Proxy 代理对象 增强后产生的对象

spring aop的实现是通过jdk动态代理或者CGLIb代理在运行时期在对象初始化阶段,加入需要执行的功能

JDK动态代理是基于接口的实现,CDLib是基于类的继承的实现

Before advice 前置通知,在目标方法调用之前执行。无论方法是否异常都执行

After returning advice 后置通知 在目标方法执行后执行,前提是目标方法没有遇到异常,如果有异常则不执行通知

After throwing advice 异常通知,在目标方法抛出异常时执行,可以获取异常信息

After finally advice 最终通知 在目标方法执行后执行,无论是否是异常执行

Around advice 环绕通知 最强大的通知类型,可以控制目标方法的执行(调用ProceedingJoinPoint.proceed())可以在目标执行全过程中进行执行

实现aop的准备

1定义一个切面类Aspect

即在声明的类,增加@Component @Aspect两个注解

2.定义切点Pointcut

定义切点,并定义切点在那些地方执行,采用@Pointcut注解完成如@Pointcut(public * com.xxx.xxx.*.*(..))

规则:修饰符(可以不写,但不能用*)+返回类型+那些包下的类+那些方法+方法参数 "*"代表不限,".."两个点代表参数不限

3.定义Advice通知

利用通知的5种类型注解@Before  @After  @AfterReturning  @AfterThrowing  @Around来完成某些切点的增强动作,如@Before("myPointcut()")   myPointcut为第二步骤自己定义的切点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值