У меня есть метод Java, getAllItems(), и я создал метод аспекта, который вызывается после завершения getAllItems().
@Repository
@Scope("prototype")
public class ItemDao {
// not using database connection for this question; the program works fine, except aspects
public List<String> getIAllItems() {
List<String> items = new ArrayList();
items.add("item1");
return items;
}
}
Класс аспекта таков:
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import java.util.List;
@Aspect
public class MyAspects {
@AfterReturning(pointcut = "execution(* ro.telacad.dao.ItemDao.getIAllItems(..))", returning="items")
public void afterGetAllItems(List<String> items) {
System.out.println(items);
}
}
Итак, после вызова getAllItems() я ожидаю увидеть в консоли напечатанное «[item1]», но метод аспекта не вызывается. Ошибки в консоли нет, а приложение, кроме аспектов, работает нормально. Итак, я считаю, что все весенние бобы созданы.
В appConfig.xml bean-компоненты объявлены следующим образом:
<context:component-scan base-package="ro.telacad.*" />
<aop:aspectj-autoproxy/>
Мой вопрос в том, что я сделал неправильно для аспектов.