Мой @Around совет не называют для всех методов в пакете

У меня есть этот код ниже в моем классе LoggingAspect, и я, ожидают, что это будет работать за моими методами как

gov.ssa.rome.service.impl.save () gov.ssa.rome.dao.impl.save ()

но это работает только в один раз несмотря ни на что., я не знаю почему. я использовал автопровод для проводного соединения дао к servcice слою. Я действительно ценю Вашу справку.

что я должен сделать для создания этого метода выполненным для всего моего потока приложения для наблюдения потока в журналах?

@Around("execution(* gov.ssa.rome..*.*(..))")
public Object log(ProceedingJoinPoint pjp) throws Throwable {

 System.out.println("aspect Around started");

        Object ret = pjp.proceed();

    System.out.println("aspect Around ended);

  return ret;
}
1
задан skaffman 29 July 2010 в 18:05
поделиться

1 ответ

Аспекты можно создавать с использованием различных технологий. Если у вас прокси JDK, они будут работать только для методов, определенных в интерфейсе. Если это прокси cglib, они будут работать со всеми методами, кроме final. Я думаю, что Spring по умолчанию будет использовать прокси JDK, если соответствующий класс реализует интерфейс, а в противном случае прокси cglib.

Проверьте, как выглядит ваш класс с помощью метода сохранения, и исходит ли сохранение из интерфейса. Вы можете принудительно использовать прокси-серверы aspectjweaver, чтобы все работало, но они требуют некоторых манипуляций с байт-кодом. Я бы рекомендовал придерживаться прокси JDK и создавать / расширять интерфейсы там, где это необходимо. Дополнительную информацию см. В главе «Документация по пружинам», посвященной AOP.

2
ответ дан 2 September 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: