学习记录

来源:互联网 发布:touchslide.js 编辑:程序博客网 时间:2024/06/02 05:13

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"/>

测试代码:

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


0 0
原创粉丝点击