Spring-AOP

AOP (Aspect Orient Programming),直译过来就是 面向切面(方面)编程。AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个层次的对象,而面向切面编程是将程序抽象成各个切面。

AOP编程可不是Spring独有的,Spring只是支持AOP编程的框架之一。

AOP分两类,一类可以对方法的参数S进行拦截,一类是对方法进行拦截,SpringAOP属于后 者,所以Sprin

1.1 基础案例说明

为了更好说明,我们接下来,要讲解的知识点,我们以一个常见的例子来说明

我们以数据库的操作为例来说明:

  • 获取连接对象

  • 执行SQL(核心业务代码)

  • 如果有异常,回滚事务,无异常则提交事务

  • 关闭连接

  • g的AOP是属于方法级的

2. AOP术语

连接点(Joinpoint) 程序执行的某个特定位置,如某个方法调用前,调用后,方法抛出异常后,这些代码中的特定点称为连接点。简单来说,就是在哪加入你的逻辑增强连接点表示具体要拦截的方法,上面切点是定义一个范围,而连接点是具体到某个方法

切点(PointCut) 每个程序的连接点有多个,如何定位到某个感兴趣的连接点,就需要通过切点来定位。比如,连接点--数据库的记录,切点--查询条件

增强(Advice) 增强是织入到目标类连接点上的一段程序代码。在Spring中,像BeforeAdvice等还带有方位信息

目标对象(Target) 需要被加强的业务对象

织入(Weaving) 织入就是将增强添加到对目标类具体连接点上的过程。

织入是一个形象的说法,具体来说,就是生成代理对象并将切面内容融入到业务流程的过程。

代理类(Proxy) 一个类被AOP织入增强后,就产生了一个代理类。

切面(Aspect) 切面由切点和增强组成,它既包括了横切逻辑的定义,也包括了连接点的定义,SpringAOP就是将切面所定义的横切逻辑织入到切面所制定的连接点中。

比如上文讨论的数据库事务,这个数据库事务代码贯穿了我们的整个代码,我们就可以这个叫做切面。 SpringAOP将切面定义的内容织入到我们的代码中,从而实现前后的控制逻辑。 比如我们常写的拦截器Interceptor,这就是一个切面类

2.1 图解

 

3. Spring概述

1,AOP编程可不是Spring独有的,Spring只是支持AOP编程的框架之一,这一点非常重要,切勿搞反了关系。

2,AOP分两类,一类可以对方法的参数进行拦截,一类是对方法进行拦截,SpringAOP属于后者,所以Spring的AOP是属于方法级的

@Before: 标识一个前置增强方法,相当于BeforeAdvice的功能.

@After: final增强,不管是抛出异常或者正常退出都会执行.

@AfterReturning: 后置增强,似于AfterReturningAdvice, 方法正常退出时执行.

@AfterThrowing: 异常抛出增强,相当于ThrowsAdvice.

@Around: 环绕增强,相当于MethodInterceptor.

execution:用于匹配方法执行的连接点;

AOP带来的好处

AOP是公用的框架代码放置的理想地方,将公共代码与业务代码分离,使我们在处理业务时可以专心的处理业务。

通过使用AOP我们可以将日志记录,数据合法性验证,异常处理等功能放入AOP中,那么在编写业务时就可以专心实现真正的业务逻辑代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值