Spring AOP

Spring AOP
1.动态代理:
使用一个代理将对象包装起来,然后通过该代理对象取代原始对象,任何原始对象的调用
都要通过代理,代理对象决定是否以及何时将方法调用转到原始对象上
2.AOP简介
(1)AOP概念
AOP是Aspect Oriented Programming的缩写,面向切面编程
AOP主要用于处理共同逻辑(日志记录,性能统计,安全控制,事务处理,异常处理等)
AOP可以将这些共同逻辑从普通业务逻辑代码中分离出来,这样在日后的修改这些逻辑是就不会影响业务逻辑代码
开发阶段(我们做的)
编写核心业务代码(开发主线):大部分程序员来做,熟悉业务需求
把公共代码抽取出来,制作成通知(开发阶段最后做)
在配置文件中声明切入点和通知间的关系,即切面
运行阶段:(Spring框架完成的)
Spring框架监控切入点方法执行,一旦切入点方法执行,使用地阿里机制,动态创建目标对象的代理对象根据通知类别,在代理对象的对应位置,将通知对应的功能植入
完成完整的代码逻辑运行

AOP和OOP之间的练习和区别
AOP和OOP在字面上虽然非常相似,但是却是面向不同的领域的梁总设计思想
OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装
已获得更加清晰高效的逻辑单元划分
AOP(面向切面编程)针对业务处理过程中的切面进行提取
他所面对的是处理过程中摸个步骤或阶段,已获得逻辑过程中各部分之间低耦合性的隔离效果
AOP需要OOP为前提和基础,是对OOP的补充

2.AOP的优点
使用AOP可以对业务逻辑的各个部分进行撤离,从而使得业务逻辑各部分之间的耦合度降低
提高程序的可重用性,同时提高开发效率
3.AOP相关术语
①切面

切入点表达式
关键字:executeion(表达式)
表达式写法:
访问修饰符 返回值 包名.包名…类名.方法名(参数列表)
全匹配方式
public void com.dh.service.impl.CustomerServiceImpl.saveCustomer()
访问修饰符可以省略
返回值可以使用通配符,表示任意返回值,通配符是*
.com.dh.service.impl.CustomerServiceImpl.saveCustomer()
包名可以使用通配符,表示任意包,但是,有几个包就需要写几个

....CustomerServiceImpl.saveCustomer()
包名可以使用…表示当前包及其子包
*com…CustomerServiceImpl.saveCustomer()
类名和方法名都可以使用通配符

  • com….()
    参数列表可以使用具体类型,来表示参数类型
    基本类型直接写类型名称:int
    引用类型必须是报名.类名。java.lang.Integer
    参数列表可以使用通配符表示任意类型,但是必须要有参数
    参数列表可以使用…表示有无参数均可,有参数可以是任意类型
    com….
    (…)
    全通配方式
  • .(…)
    实际开发中,我们一般情况下,都是对业务层方法进行增强
    写法:
    com.da. service.impl..(…)
    定义通用切入点表达式,如果写在aop:aspect标签外部,则表示所有的切面可用
    <aop:pointcut expression="(* com.da.service.impl..(…)) id=“pt1”>
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页