【Spring学习笔记】09 AOP

2108.5.23
1、 AOP(面向切面编程)
在软件业, AOP为 Aspect Oriented Programming的縮写,意为:面向切面编程,通过 预编译方式和 运行期动态代理实现程序功能的统一维护的一种技术· AOP是OOP的延续,是软件开发中的一个热点,也是 Spring框架中的一个重要内容,是函数式编程的一种衍生范型。 利用 AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开及的效率

AOP思想:横向重复、纵向抽取

2、底层实现
Spring的 AOP的底层用到两种代理机制
JDK的动态代理:针对实现了接囗的类产生代理。
Cglib的动态代理:针对没有实现接囗的类产生代理,应用的是底层的字节码增强的技术生成当前类的子类对象。

3、 AOP的开发中的相关术语

insert

update

delete

select

能够进行事务处理的方法叫做连接点。(待切入)

植入了事务处理的点叫做切入点。(已切入)
  • Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在 spring中,这些点指的是方法.因为 spring只支持方法类型的连接点(可以被切入的点)。eg:
  • Pointcut(切入点):所谓切入点是指我们要对哪些 Joinpoint进行拦截的定义。(已经被切入的点)。
  • Advice(通知/增强):所谓通知是指拦截到 Jotnpoint之后所要做的事情就是通知。通知分为前置通知,后置通知,异常通知,最终通知,环哓通知(切面要完成的功能)。
  • Introduction(引介):引介是一种特殊的通知在不修改类代码的前提下, Introduction可以在运行期为类动态地添加一些方法或 Field。
  • Aspect(切面):是切入点和通知(引介)的结合。面向切面:在CURD方法上插入加入了事务处理代码成为切面。
  • Target(目标对象):代理的目标对象。
  • Proxy(代理):一个类被 AOP织入增强后,就产生一个结果代理类。
  • weaving(织入):是指把增强应用到目标对象来创建新的代理对象的过程。spring采用动态代理织入,而 AspectJ采用编译期织入和类装载期织入。
AOP的概念不好像IOC一样实例化举例,现在我们以一个系统中的具体实现来讲讲AOP具体是个什么技术。
我们以系统中常用到的 事务管控 举例子。在系统操作数据库的过程中,不可避免地要考虑到事务相关的内容。如果在每一个方法中都新建一个事务管理器,那么无疑是对代码严重的耦合和侵入。为了简化我们的开发过程(实际上spring所做的一切实现都是为了简化开发过程),需要把事务相关的代码抽成出来做为一个独立的模块。通过AOP,确认每一个操作数据库方法为一个连 接点,这些连接点组成了一个切面 。当程序运行到其中某个一个切点时,我们将 事务管理模块顺势织入对象中,通过通知功能 ,完成整个事务管控的实现。这样一来,所有的操作数据库的方法中 不需要再单独关心事务管理的内容,只需要关注自身的业务代码 的实现即可。所有的事务管控相关的内容都通过AOP的方式进行了实现。简化了代码的内容,将目标对象复杂的内 容进行解耦,分离业务逻辑与横切关注点

猜你喜欢

转载自blog.csdn.net/u013182992/article/details/80495025