spring主要内容之AOP

前两篇文章讲了为了简化代码开发和松散耦合,spring分别使用了模板技术和依赖注入技术。这一篇再说下第三种技术,就是面向切面编程,简称AOP。

在编程中,存在着一些分散在系统各处的零散操作,比如日志、事务、安全等。面向切面编程是把这些分散于系统各处的零散的操作摘出来,交给spring框架去处理它们和业务方法的关系,开发人员只需要关注系统主要业务逻辑即可。这样就可以简化代码开发和系统的层次。

 

AOP涉及到两个基本概念:切点和切面。

首先解释下切点。可以把切点理解为“被切割出来的点”,在代码中体现为一个方法。

假如要在方法M执行前,执行日志方法B;在方法M执行后,执行日志方法A。读这句话的时候,我们明显感觉到,方法M被分离了出来,被凸显了出来。这是因为日志方法B和日志方法A的执行,像是在方法M的前后切割了两刀,把方法M摘了出来。

这里方法M就称为切点,因为它被日志方法B和日志方法A从业务逻辑流中切割了出来了。

 

再解释下切面。可以把切面理解为“用来切割的刀”,在代码中体现为一个方法。上面的例子中,日志方法B和日志方法A就是两个切面。

一个切面不是仅仅可以用来切割一个点,而是可以用来切割多个点。

 

那么具体的应该如何操作呢?

在spring的配置文件中,首先要定义切点,用aop:pointcut标签来定义。aop:pointcut标签指定了切点对应的方法。

由于一个切面可以切割多个点,所以aop:pointcut标签定义的是一个切点集合(亦即方法的集合),而不仅仅是一个切点。

然后要定义一个切面,用aop:aspect标签和aop:before、aop:after等标签来定义。

aop:aspect标签是一个父标签,表示切面的集合,其内部包含一组具体的切面,包括前切面、后切面、异常切面等,有集合的概念在里面。这些具体的切面对应的方法都是属于同一个类,这个类在父标签aop:aspect中指定。

aop:brefore、aop:after等标签是子标签,它们指定了具体切面对应的方法。

具体代码如下:

<bean id="edgeOperation" class="com.zaoren.aspect.EdgeOperation"/>
    
    <aop:config>
        <aop:pointcut id="pointcut1" expression="execution(public * com.zaoren.controller.*Controller.*(..))"/>
        
        <aop:aspect ref="edgeOperation">
            <aop:before method="readBook" pointcut-ref="pointcut1"/>
            <aop:after method="updateList" pointcut-ref="pointcut1"/>
        </aop:aspect>
    </aop:config>

 

转载于:https://www.cnblogs.com/jxdr/p/11430331.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值