学习记录 - Advice应用

Around advice

通知方法的第一个参数必须是ProceedingJoinPoint类型

示例:

	public Object around(ProceedingJoinPoint pjp) {
              Object obj = null;
              //执行方法 会抛出异常
              try{
                 //做你想做的事情
                 Object retVal = pjp.proceed();
                 //做你想做的事情
              }catch(Throwable e){
                 e.printStackTrace();
              }
              return retVal;
	}

Advice parameters

带参数的Advice

示例:

XML:

			<aop:around method="aroundInit" pointcut="execution(* com.imooc.aop.schema.advice.biz.AspectBiz.init(String, int)) 
							and args(bizName, times)"/>

切面:

	public Object aroundInit(ProceedingJoinPoint pjp, String bizName, int times) {
		System.out.println(bizName + "   " + times);
		Object obj = null;
		try {
			System.out.println("MoocAspect aroundInit 1.");
			obj = pjp.proceed();
			System.out.println("MoocAspect aroundInit 2.");
		} catch (Throwable e) {
			e.printStackTrace();
		}

		return obj;
	}


Introductions

允许一个切面声明一个实现指定接口的通知对象,并且提供了一个接口实现类来代表这些对象。

由<aop.sapect>中的<aop.declare-parents>元素声明该元素用于声明所匹配的类型拥有一个新的parent(因此得名)。

示例:

				<aop:declare-parents types-matching="com.imooc.aop.schema.advice.biz.*(+)" 
							implement-interface="com.imooc.aop.schema.advice.Fit"
							default-impl="com.imooc.aop.schema.advice.FitImpl"/>

测试代码:

	@Test
	public void testFit() {
		Fit fit = (Fit)super.getBean("aspectBiz");
		fit.filter();
	}
可以进行强制类型转换,说明是FitImpl的子类,并且实现了接口的filter()方法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值