Весенние Аспекты не выполняются - PullRequest
2 голосов
/ 17 ноября 2011

Я работал над добавлением аспектов в веб-приложение Spring MVC, но эти аспекты не выполняются. Я пытался свести это к чему-то простому, что должно сработать, но все равно ничего не выйдет. Вот где я сейчас нахожусь:

// imports...
@Aspect
public class AuthCheckerAspect {
    {
        System.out.println("initting");
    }

    @Pointcut("execution(* * *(..))")
    public void c() {}

    @Before("c")
    public void cc(JoinPoint pjp) throws Throwable {
        System.out.println("test...");
    }
 }

Насколько я могу судить, pointcut должен применяться к любому методу в любом классе, управляемом Spring (которых в моем приложении много). Я также добавил следующее в мою конфигурацию Spring:

<aop:aspectj-autoproxy/>

Я установил точку останова в операторе System.out.println () в методе cc (), но он никогда не перехватывался (и да, я уверен, что отладчик подключен; другие точки останова перехватывают правильно). Я подозреваю, что класс AuthCheckerAspect никогда не загружается в контекст Spring, потому что я также установил точку останова в предложении initializer, и это тоже никогда не перехватывает; когда я делаю то же самое с другими классами, управляемыми Spring, их точки останова всегда перехватываются при запуске приложения.

Есть ли что-то еще, что мне нужно сделать?

Заранее спасибо.

Ответы [ 2 ]

9 голосов
/ 17 ноября 2011

Spring автоматически не управляет @Aspect s.Добавьте <bean class="AuthCheckerAspect" /> в свой контекст или аннотируйте его @Component и включите в путь сканирования компонента.

3 голосов
/ 17 ноября 2011

добавьте это в ваш файл конфигурации:

<context:annotation-config />
<context:component-scan base-package="root.package.to.be.scanned" />
<aop:aspectj-autoproxy>
    <aop:include name="nameOfAspectBean" />
</aop:aspectj-autoproxy>
...