Spring学习(四)— AOP及其通知类型的实现(二)

使用AspectJ方式实现通知类

一、异常通知

 1、新建类,在类写任意名称的方法

public class MyThrowAdvice{
    public void myexception(Exception e){
        System.out.println("执行异常通知"+e1.getMessage());
    }
}

 2、在 spring 配置文件中配置

  <aop:aspect>的 ref 属性表示:方法在哪个类中.
  <aop: xxxx/> 表示什么通知
  method: 当触发这个通知时,调用哪个方法
  throwing: 异常对象名,必须和通知中方法参数名相同(可以不在通知中声明异常对象)

<bean id="demo" class="com.wzg.test.Demo">
<bean id="mythrow" class="com.wzg.advice.MyThrowAdvice"></bean>
    <aop:config>
        <aop:aspect ref="mythrow">
            <aop:pointcut expression="execution(* com.wzg.test.Demo.demo1())" id="mypoint"/>
            <aop:after-throwing method="myexception" pointcut-ref="mypoint" throwing="e"/>
        </aop:aspect>
    </aop:config>
</bean>


二、实现前后置通知以及环绕通知

package com.wzg.advice;

import org.aspectj.lang.ProceedingJoinPoint;

public class MyAdvice {
	public void mybefore() {
		System.out.println("前置 ");
	}
	public void myafter() {
		System.out.println("后置1");
	}
	public void myafter2() {
		System.out.println("后置2");
	}

	public Object myarround(ProceedingJoinPoint joinPoint) throws Throwable {
		System.out.println("执行环绕");
		System.out.println("前置环绕");
		Object object = joinPoint.proceed();
		System.out.println("后置环绕");
		return object;
	}
}

spring配置文件

 <aop:after/> 后置通知,是否出现异常都执行
 <aop:after-returing/> 后置通知,只有当切点正确执行时执行
 <aop:after/> 和 <aop:after-returing/> 和<aop:after-throwing/>执行顺序和配置顺序有关

    <aop:config>
    	<aop:aspect ref="myadvice">
    		<aop:pointcut expression="execution(* com.wzg.test.Demo.demo1())"id="mypoint"/>
    		<aop:before method="mybefore" pointcut-ref="mypoint"/>
    		<aop:after method="myafter" pointcut-ref="mypoint"/>
    		<aop:after-returning method="myafter2" pointcut-ref="mypoint"/>
    		<aop:after-throwing method="mythrow" pointcut-ref="mypoint"/>
    		<aop:around method="myarround" pointcut-ref="mypoint"/>
    	</aop:aspect>
    </aop:config>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值