为什么我的输入结果和视频里的不一样?(Around advice)

来源:5-5 Advice应用(下)

砂锅饭喽

2015-03-04 14:45

我的输出结果(代码是一样的):

MoocAspect before.

MoocAspect aroud 1.

AspectBiz biz.

MoocAspect afterReturning.

MoocAspect after.

MoocAspect aroud 2.

写回答 关注

5回答

  • 森林清风
    2015-10-19 00:46:30

    因为是随机的,你可以用order设置顺序,详见spring文档。文档中的finally仅仅表示一定会被执行,并不代表最后被执行

  • 砂锅饭喽
    2015-03-04 16:13:41

    public void before()

    {

    System.out.println("MoocAspect before.");

    }

    public void afterReturning()

    {

    System.out.println("MoocAspect afterReturning.");

    }

    public void afterThrowing()

    {

    System.out.println("MoocAspect afterThrowing.");

    }

    public void after()

    {

    System.out.println("MoocAspect after.");

    }

    public Object around(ProceedingJoinPoint pjp)

    {

    Object obj = null;

    try

    {

    System.out.println("MoocAspect aroud 1.");

    obj = pjp.proceed();

    System.out.println("MoocAspect aroud 2.");

    } catch (Throwable e)

    {

    e.printStackTrace();

    }

    return obj;

    }

  • Coda
    2015-03-04 15:46:48

    你定义的顺序和结果是一样的么?你看一下你的定义顺序,都是按定义的顺序执行的。

    砂锅饭喽 回复Coda

    moocAspect中代码已贴出,顺序为before,afterReturning,afterThrowing,after,around

    2015-03-04 16:15:14

    共 3 条回复 >

  • 砂锅饭喽
    2015-03-04 15:14:42

    配置文件如下:

    <?xml version="1.0" encoding="UTF-8"?>

    <beans

    xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:aop="http://www.springframework.org/schema/aop"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/beans/spring-beans.xsd

    http://www.springframework.org/schema/aop

        http://www.springframework.org/schema/aop/spring-aop-3.1.xsd

    ">

    <bean id="moocAspect" class="com.yxq.aop.MoocAspect"></bean>

    <bean id="aspectBiz" class="com.yxq.aop.AspectBiz"></bean>

    <aop:config>

      <aop:aspect id="moocAspectAOP" ref="moocAspect">

         <aop:pointcut expression="execution(* com.yxq.aop.*Biz.*(..))" id="moocPointcut"/>

         <aop:before method="before" pointcut-ref="moocPointcut"/>

         <aop:after-returning method="afterReturning" pointcut-ref="moocPointcut"/>

         <aop:after-throwing method="afterThrowing" pointcut-ref="moocPointcut"/>

         <aop:after method="after" pointcut-ref="moocPointcut"/>

         <aop:around method="around" pointcut-ref="moocPointcut"/>

      </aop:aspect>

    </aop:config>

    </beans>

  • Coda
    2015-03-04 14:48:38

    你的配置文件也要和视频的一样

    砂锅饭喽

    我觉得我的配置文件和视频上的应该是一样的,除了Spring版本不一致,配置文件已贴出

    2015-03-04 15:15:43

    共 1 条回复 >

Spring入门篇

为您带来IOC和AOP的基本概念及用法,为后续高级课程学习打下基础

268787 学习 · 963 问题

查看课程

相似问题