spring-aop基础搭建

本文介绍如何使用Spring框架配置AOP(面向切面编程),包括通过XML配置和注解方式实现AOP,涵盖导入必要的JAR包、配置切入点、通知类型等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载spring-framework-3.0.2.RELEASE-dependencies.zip与spring-framework-4.2.4.RELEASE-dist.zip文件

解压后


然后去里面找下面几个jar包,这个只配置aop,所有jar包导入的知识aop需要的。

导入jar包。


配置

导入aop约束,spring约束(不会配置约束的去网上找找,配不成功的给我留言)

spring-framework-4.2.4.RELEASE-dist\spring-framework-4.2.4.RELEASE\schema

spring-aop-4.2.xsd

spring-beans-4.2.xsd


写一个接口与实现类,



写一个要切入的代码


配置


<!-- 导入约束,aop,beans -->
  <!-- 配置目标对象 -->
  <bean name="userServiceTarget" class="com.mask.service.UserServiceImpl"></bean>
  <!-- 配置通知对象 -->
  <bean name="myAdvice" class="com.mask.a_srpingaop.MyAdvice"></bean> 
  <!-- 配置将通知织入目标对象 -->
  <aop:config>
    <!-- 配置切入点 -->
    <!-- expression="excution(com.mask.service.UserService.save()) "
         //公开的返回值也为空的空参方法
         public void com.mask.service.UserService.save()
         //public可以省略 默认public void改为*,因为对返回值没有要求
         * com.mask.service.UserService.save()
         //为UserService类下的所有方法切入,方法还是空参的
         * com.mask.service.UserService.*()
         //为UserService类下的所有方法切入,参入没有要求,也可以为空
         * com.mask.service.UserService.*(..)
          //为*Service后缀类下的所有方法切入,参入没有要求,也可以为空,用这个就可以了
         * com.mask.service.*Service.*(..) 
         //service。。不但找已*Service为后缀的,还会找com.mask.service下的所有子包。。。一般用不到。
         * com.mask.service.。*Service.*(..) 
    -->
    <aop:pointcut expression="execution(* com.mask.service.*Service.*(..))" id="pc"/>
    <aop:aspect ref="myAdvice">
      <!-- 前置通知方法
      com.mask.a_srpingaop.MyAdvice里的before方法作为前置通知
                    。。。
       -->
      <aop:before method="before" pointcut-ref="pc"/>
      <!-- 后置 -->
      <aop:after-returning method="afterReturning" pointcut-ref="pc"/>
      <!-- 环绕 -->
      <aop:around method="around" pointcut-ref="pc"/>
      <!-- 后置 -->
      <aop:after method="after" pointcut-ref="pc"/>
      <!-- 异常 -->
      <aop:after-throwing method="afterException" pointcut-ref="pc"/>
      
    </aop:aspect>

  </aop:config>


写一个测试方法


  运行测试方法,双击测试方法名 然后Run As->JUnit Test 测试结果


----------------------------------------------------------------------------------------------------------------------------------

下面使用注解的方式配置。

把上面的applicationContext.xml文件的<aop:config></aop:config>干掉换成自动配置

<aop:aspectj-autoproxy></aop:aspectj-autoproxy>


然后在配置通知对象里写注解



注解后直接写切面表达式出现硬编码问题,优化为



测试结果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值