您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Spring AOP && MVC订购方面

使用Spring AOP && MVC订购方面

您不需要实现Ordered接口。

在Spring AOP中,您可以轻松完成许多工作。

@Aspect
@Order(1)
public class AspectA
{
  @Before("............")
   public void doit() {}
}

@Aspect
@Order(2)
public class AspectB
{
  @Before(".............")
  public void doit() {}
}

@Aspect
@Order(1)
public class SpringAspect {

    @pointcut("within(com.vanilla.service.MyService+)")
    public void businessLogicMethods(){}

     @Around("businessLogicMethods()")
     public Object profile(ProceedingJoinPoint pjp) throws Throwable {
             System.out.println("running Advice #1");   
         Object output = pjp.proceed();
         return output;
     }
}

@Aspect
@Order(2)
public class SpringAspect2 {

    @pointcut("within(com.vanilla.service.MyService+)")
    public void businessLogicMethods(){}

     @Around("businessLogicMethods()")
     public Object profile(ProceedingJoinPoint pjp) throws Throwable {
             System.out.println("running Advice #2");   
         Object output = pjp.proceed();
         return output;
     }
}

现在,应用程序上下文配置XML:

<context:annotation-config />
<aop:aspectj-autoproxy />

  <bean id="springAspect" class="com.vanilla.aspect.SpringAspect" />
    <bean id="springAspect2" class="com.vanilla.aspect.SpringAspect2" />

您需要通过以下方式启用AOP代理:

<aop:aspectj-autoproxy />

否则,将不会激活任何建议。

我只是对此问题进行研究。@order注解仅适用于基于Spring的代理AOP(在我的示例中使用的是)。如果您使用的是编织文件,则应使用声明优先级选项。

那么您需要将其配置为

<bean id="systemArchitecture" class="x.y.z.SystemArchitecture" />

我在您的代码中看不到它。

无论如何。请在Facebook上给我留言,我将向您发送一个工作示例,该示例正是您要执行的操作。

Java 2022/1/1 18:13:43 有708人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶