Spring初步了解-AOP

面向切面变成(AOP)是软件变成思想发展到一定阶段的产物,是对面向对象变成(OOP)的有益补充。AOP一般适用于具有横切逻辑的场合,如访问控制,事务管理,性能检测等,比如业务系统中,总有一些散落系统各处得不到处理的事情,这些穿插在既定业务中的操作就是所谓的‘横切逻辑’,也称切面。我们解决这些问题很容易想到的是把他们抽出放在专门的类中和方法中,便于管理和维护。但是依然无法实现既定业务和横切逻辑的彻底解耦合,我们希望无需编写显示调用,需要时系统可以自动调用所需的功能,这就是AOP解决的主要问题。

面向切面变成简单来说就是在不改变原程序的基础上为代码段增加新的功能,对代码进行增强处理。

了解下AOP的基本概念。

切面:一个模块化的横切逻辑可能会横切成多个对象。

连接点:程序执行中的某个具体的执行点。

增强处理:切面在某个特定连接点上执行的代码逻辑。

切入点:对连接点的特征进行描述,可以使用正则表达式,增强处理和一个切入点表达式相关联,并在与这个切入点匹配的某个连接点上运行。

目标对象:被一个或多个切面增强的对象。

AOP代理:由AOP框架所创建的对象,实现执行增强处理方法等功能。

织入:将增强处理连接到应用程序中的类型或对象的过程。

增强处理类型:比如前置增强,后置增强,环绕增强,最终增强,异常抛出增强。

使用AOP举个实现日志输出的列子:

我们先定义一个接口:里面有一个方法。


然后去实现这个接口,我们随便实现一下:


然后在创建一个增强处理类:


接着我们去配置我们AOP增强处理:


第一个bean是我们的增强类的bean第二个是刚才接口里业务方法的bean

与AOP相关的配置都放在aop:config标签里,<aop:poinctuct>是切入点的配置,execution是切入点指示符括号里是

切入点表达式,可以在网上搜一点有关的常用模糊匹配,我们用的是指我们项目下的cn.bdqn下的Service包下的所有方法以及子包下的所有方法,(..)里面是指任意类型。


使用<aop:aspect>可以引用包含增强方法的bean。

<aop:before>是前置增强

<aop:after>是最终增强

<aop:around>是环绕增强

<aop:after-throwing>是异常抛出增强

然后我们在让他在控制台输出一下。


这是我们在正常情况下运行的。

我们试试刚才我们在实现方法时注释掉的代码,让他出现算数异常从而实现异常:


也是正确打印出了异常的日志。

总结:

从上所看的业务代码和日志代码是完全分离的,经过AOP配置后,不需要做任何代码修改就可以在方法前后输出日志。

AOP主要是提供另外一种编程思路,可以把类似的行为抽离出来统一处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值