Вам не нужно реализовывать заказанный интерфейс.
В 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 />
в противном случае советы не будут активированы.
Обновление 2:
Я просто исследую эту проблему. @order
аннотация работает только на прокси-сервере AOP на основе Spring (который я использую в моем примере). В соответствии с документацией, если вы используете ткачество, вы должны использовать опцию декларирования приоритета.
Обновление 3
- Я не вижу никаких советов в вашем коде, только аспекты и указания.
- Если ваши классы Advice: x.y.z.SystemArchitecture
тогда вам нужно настроить его как
<bean id="systemArchitecture" class="x.y.z.SystemArchitecture" />
и я не вижу этого в вашем коде.
- "выполнение (* com.jajah.StorageManager.HomeController. * (..))" на что вы нацеливаетесь? Вы можете написать это, используя слова?
Во всяком случае. Пожалуйста, напишите мне сообщение на Facebook, и я вышлю вам рабочий пример, который делает именно то, что вы пытаетесь сделать.