spring学习总结(三)

第三讲

一、AOP的基本概念
  1. 织入:将增强处理添加到目标对象中,并创建一个增强的对象的过程就是织入。织入有两种实现方式:编译时增强(如AspectJ)和运行时增强(如Spring AOP)
  2. 引入:将方法或者字段添加到被处理的类中。
  3. 目标对象:被AOP框架进行增强处理的对象。
  4. AOP代理:AOP框架创建的对象。
    2、需要代理类不是接口的时候,Spring会自动的切换为使用cglib代理。
    3、基于注解的“零配置”方法
  5. 定义切面bean:@Aspect
  6. 定义Before增强处理:@Before("execution(* cc.wsyw126.spring.service.imp.*.*(..))")
    1. 第一个*表示返回类型不限
    2. 第二个*表示类名不限
    3. 第三个*表示方法名不限
    4. 括号中的..代表任意个数、类型不限的形参
    5. Pointcut可以省去(value作用同pointcut)
  7. 定义AfterReturning增强处理:@AfterReturning(returning="rt",pointcut = "execution(* cc.wsyw126.spring.service.imp.*.*(..))")
    1. 声明rt时指定的类型会限制目标方法必须返回指定类型的值或没有返回值
    2. AfterReturning修饰的方法,必须有参数。若将参数rt的类型声明为Object,意味着对目标方法的返回值不加限制
    3. AfterReturning
  8. 定义AfterThrowing增强处理:@AfterThrowing(throwing="ex",pointcut="execution(* cc.wsyw126.spring.service.imp.*.*(..))")
    1. 声明ex时指定的类型会限制目标方法必须抛出指定类型的异常
    2. AfterThrowing修饰的方法,必须有参数。若将参数ex的类型声明为Throwable,意味着对目标方法抛出的异常不加限制
  9. After增强处理:@After("execution(* cc.wsyw126.spring.service.imp.*.*(..))")
    1. AfterReturning:只有在目标方法成功完成后才会被织入。
    2. After:不管方法如何结束(包括成功和异常终止),它都会被织入。
    3. 基于ii的性质,After增强处理通常用于释放资源。
  10. Around增强处理
    1. 近似于before和afterreturning的总和。
    2. 不同的是:既可以决定目标方法在什么时候执行,如何执行,甚至可以完全阻止目标方法的执行。
    3. 通常需要在线程安全的情况下使用。
    4. 增强处理的方法的第一个形参必须是proceedingJoinPoint类型(并且至少包含一个形参)。
    5. 在方法内,调用proceed()方法才会执行目标方法,这就是控制目标方法执行时机和如何执行的关键。如果没有调用,则目标方法不会执行。
    6. around
      4、当不同切面里的两个增强处理需要在同一个连接点被织入时,spring AOP将以随机的顺序织入。如果需要执行优先级,有两种方法:
  11. 让切面类实现org.springframework.core.Ordered接口,实现int getOrder()方法,该方法返回值越小,优先级越高。
  12. 直接使用@Order注解来修饰一个切面类。可指定一个int型的value属性,该属性值越小,优先级越高。
5、如果只访问目标方法的参数,可以使用args切入点表达式来绑定目标方法的参数。
  1. args
  2. @AfterReturning(returning="rvt" , pointcut="execution(* org.crazyit.app.service.impl.*.*(..)) && args(arg0,arg1,..)"),可以有多个参数只要第一个和第二个与access中的类型匹配即可。
6、定义切入点:
  1. 包含两部分
    1. 一个切入点的表达式。
    2. 一个包含名字和任意参数的方法签名。
  2. 用法实例:
    1. Aspect
    2. @AfterReturning(returning="rvt", pointcut="SystemArchitecture.myPointcut()")
7、切入点指示符:
  1. execution:用于匹配执行方法的连接点。
    1. Execution(modifiers-pattern?ret-type-pattern declaring-type-pattern?name-pattern(param-pattern) throws-pattern?)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值