Spring02-AOP-01

AOP (Aspect Oriented Programming) :面向切面编程

         ------- 在原有的纵向执行流程中添加横切面

面向切面编程: 就是在程序原有的纵向执行流程中,针对某一个或一些方法添加通知,形成横向切面。

Spring 有两种实现AOP的方式:1.Schema-based    2.AspectJ

第一种方式需要实现其类与接口,而第二种不需要。两者配置都在<aop:config>标签中实现。

Schema-based

一、前置通知、后置通知、异常通知。

1.首先需要导入jar包
aopalliance.jar
aspectjweaver.jar
commons-logging-1.1.3.jar
spring-aop-4.1.6.RELEASE.jar
spring-aspects-4.1.6.RELEASE.jar
spring-beans-4.1.6.RELEASE.jar
spring-context-4.1.6.RELEASE.jar
spring-core-4.1.6.RELEASE.jar
spring-expression-4.1.6.RELEASE.jar
spring-tx-4.1.6.RELEASE.jar

2.创建测试类以及相应的通知类

      测试类

      前置通知

     后置通知

     异常通知   --- 异常通知需要自己实现afterThrowing方法,方法名必须为afterThrowing

3. 配置applicationContext.xml文件

                <!--  前置通知 后置通知 异常通知 配置  -->
        <bean id="mybefore" class="com.yyl.advisor.MyBefore"></bean> // 前置通知
        <bean id="myafter" class="com.yyl.advisor.MyAfter"></bean>   // 后置通知
        <bean id="demo" class="com.yyl.test.Test"></bean>            // 测试类
        <bean id="throw" class="com.yyl.advisor.MyThrows"></bean>    // 异常通知

	<aop:config>
	<aop:pointcut expression="execution(* com.yyl.test.Test.test1())" id="mypoint"/> // 设置切点
	
        <aop:advisor advice-ref="mybefore" pointcut-ref="mypoint"/>  // 设置前置通知
	<aop:advisor advice-ref="myafter" pointcut-ref="mypoint"/>   // 设置后置通知
	<aop:advisor advice-ref="throw" pointcut-ref="mypoint"/>     // 设置异常通知
	</aop:config> 

AspectJ

1.导入jar包

2.创建相应测试类以及advisor

    ------- 注意 这时候类以及方法名可以自由写且不需要实现任何接口

3.相应applicationContext配置

             <!--  异常通知的Aspectj方式 实现  -->
        <bean id="mythrow" class="com.yyl.advis.MyAdvisor"></bean>
        <bean id="demo" class="com.yyl.test.Test"></bean>
        <aop:config>
      <aop:aspect ref="mythrow">  // 设置切点
      <aop:pointcut expression="execution(* com.yyl.test.Test.test1())" id="mypoint"/>
      <aop:after-throwing method="throwsEx" pointcut-ref="mypoint"/>
      </aop:aspect> //设置异常通知
        	
        </aop:config>
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值