Spring之AOP使用

在AOP中有几个概念

  • 方面(Aspect)

    一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用Spring的Advisor或拦截器实现。

  • 连接点(Joinpoint)

    程序执行过程中明确的点,如方法的调用或特定的异常被抛出。

  • 通知(Advice)

    在特定的连接点,AOP框架执行的动作。各种类型的通知包括“around”、“before”和“throws”通知。

  • 切入点(Pointcut)

    指定一个通知将被引发的一系列连接点的集合。AOP框架必须允许开发者指定切入点,例如,使用正则表达式。

  • 织入(Weaving)

    将各方面与目标对象链接起来以创建建议对象的过程

以下相关代码请挪步:study-metis/spring.aop。这里给出来4种实现方式:代码构造,spring xml配置(aspect和advisor两种),以及注解的实现。

至于他们的底层都是怎么实现的另开章节分享,这里只展示使用。(其实基本离不开那两种代理方式)

配置方式使用

在开发过程中,不少有Spring Aop的使用,在面向切面编程时,我们会使用<aop:aspect>;在进行事务管理时,我们会使用<aop:advisor>。那么,对于<aop:aspect><aop:advisor>的区别,具体是怎样的呢?

至于两者的区别,网上有很多资料,但是似乎都不能说清楚。

首先,我们需要明确两者的概念。

  • <aop:aspect>:定义切面(切面包括通知和切点)
  • <aop:advisor>:定义通知器(通知器跟切面一样,也包括通知和切点)

实现方式不同

<aop:aspect>定义切面时,只需要定义一般的bean就行,而定义<aop:advisor>中引用的通知时,通知必须实现Advice接口。

搭配不同

advisor只持有一个Pointcut和一个advice,而aspect可以多个pointcut和多个advice

结论:使用场景不同

  1. <aop:advisor>大多用于事务管理。如:

    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值