Spring-AOP

动态代理

定义

  • 可以在程序的执行过程中,创建代理对象。
    通过代理对象执行方法,给目标类的方法增加额外的功能(功能增强)

jdk动态代理实现步骤

  1. 创建目标类,SomeServiceImpl目标类,给它的doSome,doOther增加 输出时间, 事务。
  2. 创建InvocationHandler接口的实现类,在这个类实现给目标方法增加功能。
  3. 使用jdk中 类Proxy,创建代理对象。实现创建对象的能力。

动态代理的作用

  1. 在目标类源代码不改变的情况下,增加功能。
  2. 减少代码的重复。
  3. 专注业务逻辑代码。
  4. 解耦合,让你的业务功能和非业务功能(日志、事务)分离。

AOP

简介

  • AOP(Aspect Orient Programming):面向切面编程。面向切面编程是从动态角度考虑程序运行过程。
  • AOP底层:就是采用动态代理模式实现的。AOP就是动态代理的规范化(统一方式)。采用了两种代理:JDK的动态代理,与CGLIB的动态代理

术语

切面-Aspect

  • 表示增强的功能,就是一堆代码,完成某一个功能。非业务功能,
    常见的切面功能有:日志、事务、统计信息、参数检查、权限验证。

连接点-JoinPoint

  • 连接业务方法和切面的位置。就是某类中的业务方法

切入点-Pointcut

  • 指多个连接点方法的集合。多个方法

通知-Advice

  • 通知表示切面功能执行的时间

目标对象

  • 给哪个类的方法增加功能,这个类就是目标对象

通知类型介绍

Before

  • 在目标方法被调用之前做增强处理

AfterReturning

  • 在目标方法正常完成后做增强处理

AfterThrowing

  • 主要用来处理程序中未处理的异常

After

  • 在目标方法完成之后做增强,无论目标方法是否成功完成

Around

  • 在目标方法完成前后做增强处理

问题

怎么理解面向切面编程?

  1. 需要在分析项目功能时,找出切面
  2. 合理的安排切面的执行时间(是在目标方法前,还是目标方法后)。
  3. 合理的安排切面的执行位置(在哪个类的哪个方法增加增强功能)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值