你不需要实现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" /> <bean id="springAspect2" />
你需要通过以下方式启用AOP代理:
<aop:aspectj-autoproxy />
否则,将不会激活任何建议。
更新2:
我只是对此问题进行研究。
@order注解仅适用于基于Spring的代理AOP(在我的示例中使用的是)。如果你使用的是编织文件,则应使用声明优先级选项。
更新3
- 我在你的代码中看不到任何建议,只是方面和切入点。
- 如果你的Advice类是:xyzSystemArchitecture
那么你需要将其配置为
<bean id="systemArchitecture" />
我在你的代码中看不到它。
- “执行( com.jajah.StorageManager.HomeController。(..))”的目标是什么?可以用文字写吗?
无论如何。请在Facebook上给我留言,我将向你发送一个工作示例,该示例正是你要执行的 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)