Настройка AOP с ZK для перехвата методов - PullRequest
2 голосов
/ 19 марта 2012

Перед определенными методами (или на данный момент всеми методами) я должен вызвать метод Аспекта для регистрации некоторых сообщений.В противном случае мое приложение работает правильно, но ни один из методов класса Aspect не вызывается.

Я пробовал ту же точку вырезания в той же структуре папок в моем локальном приложении, но когда я пытаюсь включить ее в ZK, у меня возникают проблемы.Я также изменил свой application-context.xml для поддержки AOP.

Это мой класс аспектов:

package com.mypckg.services.impl;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

@Aspect
public class MyIntercpeter {

    @Pointcut("execution(* com.mypckg.services.impl.MyService.getStudents(..))")
    public void performance() {
    }

    @Before("performance()")
    public void doSomethingBeforeExecution() {
        System.out.println("Before execution method called...");


    }

    @AfterReturning("performance()")
    public void doSomethingAfterExecution() {
        System.out.println("After execution method called...");

    }
}

Изменения, которые я сделал в application-context.xml:

<beans  .........

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

    xsi:schemaLocation="
           ..........
             http://www.springframework.org/schema/aop
  http://www.springframework.org/schema/aop/spring-aop.xsd">


.....

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

Я что-то упустил?Заранее спасибо.

1 Ответ

0 голосов
/ 19 марта 2012

Похоже, вы упустили очевидную вещь: вы забыли объявить bean-компоненты в весеннем конфиге?

Из документов Spring:

Spring AOP поддерживает только точки соединения выполнения методов для bean-компонентов Spring, поэтому вы можете думать о pointcut как о соответствии выполнению методов в bean-компонентах Spring.

http://static.springsource.org/spring/docs/2.0.x/reference/aop.html

Вы можете объявить ваши bean-компоненты с аннотациями или с помощью конфигурации.

Также было бы лучше поставить версию Spring, которую вы используете (я предположил, что это была 2.0.x).

...