Spring基于aspectJ切点传统开发

19 篇文章 0 订阅
4 篇文章 1 订阅

第一步:在spring的配置文件中定义目标与通知

    <!--目标target-->
    <bean id="orderService" class="com.itcast.aop.OrderServiceImpl"></bean>

    <!--通知Advice-->
    <bean id="orderServiceAdvice" class="com.itcast.aop.OrderServiceAdvice"></bean>

第二步:使用aop:xxx标签来完成切面与切点声明

    <!--通过AOP的标签来完成我们的配置-->
    <aop:config>    <!--它帮我们完成自动代理功能-->
        <aop:pointcut id="mypointcut" expression="execution(* com.itcast.aop.OrderServiceImpl.*(..))"></aop:pointcut><!--切点-->
        <aop:advisor advice-ref="orderServiceAdvice" pointcut-ref="mypointcut"></aop:advisor><!--切面-->
    </aop:config>

注意1:需要在xml配置文件中导入aop声明
注意2:因为我们使用aspectj的切面声明方式 需要在导入aspectj的jar包
在这里插入图片描述
< aop:xxx>标签说明:
< aop:config>来声明要对aop进行配置
< aop:pointcut>它是用于声明切点(简单说就是对哪些方法进行拦截)
< aop:advisor> 定义传统的aop的切面,传统的aop切面它只能包含一个切点与一个增强
< aop:aspect>定义aspectj框架的切面.,它可以包含多个切点与多个通知

关于切点表达式写法:

<aop:pointcut id="mypointcut" expression="execution(* com.itcast.aop.OrderServiceImpl.*(..))"></aop:pointcut>

这个语法源于aspectJ的语法,spring中aop开发,对aspectj不是完全支持,只支持部分语法。
在这里插入图片描述
在这里插入图片描述
在开发中使用的比较多的是execution语法.
关于execution语法常用:

  1. execution(public * *()) 所有的public的方法
  2. execution(* cn.itheima.aop..(…)) 所有的aop包下的所有类的方法(不包含子包)
  3. execution(* cn.itheima.aop…*(…)) 所有的aop包及其子包下的所有类的方法
  4. execution(* cn.itheima.aop.IOrderService.*(…)) IOrderService接口中定义的所有方法
  5. execution(* cn.itheima.aop.IOrderService+.*(…)) 匹配实现特定接口所有类的方法
  6. execution(* save*(…)) 区配所有的以save开头的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值