У меня есть этот код ниже в моем классе 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;
}
Аспекты можно создавать с использованием различных технологий. Если у вас прокси JDK, они будут работать только для методов, определенных в интерфейсе. Если это прокси cglib, они будут работать со всеми методами, кроме final. Я думаю, что Spring по умолчанию будет использовать прокси JDK, если соответствующий класс реализует интерфейс, а в противном случае прокси cglib.
Проверьте, как выглядит ваш класс с помощью метода сохранения, и исходит ли сохранение из интерфейса. Вы можете принудительно использовать прокси-серверы aspectjweaver, чтобы все работало, но они требуют некоторых манипуляций с байт-кодом. Я бы рекомендовал придерживаться прокси JDK и создавать / расширять интерфейсы там, где это необходимо. Дополнительную информацию см. В главе «Документация по пружинам», посвященной AOP.