Мне нужно обработать все исключения, которые возникают из общедоступных методов класса, аннотированных некоторыми аннотациями. Я пытаюсь использовать Spring AOP. Это мой регистратор:
@Aspect
public class Logger {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Pointcut("@annotation(loggable)")
public void isLoggable(Loggable loggable) {
}
@AfterThrowing(pointcut = "isLoggable(loggable)", throwing = "e")
public void afterThrowing(Loggable loggable, Exception e) throws Throwable {
log.error("AFTER", e);
}
@Loggable
- моя аннотация.
Затем я добавил аннотацию @EnableAspectJAutoProxy
в свой класс конфигурации.
Сначала я попытался аннотировать некоторый метод, который вызывает исключение. Он работает нормально, но как я могу заставить это работать для всех общедоступных методов в классе, аннотированных аннотацией @Loggable
?
Logger
_2 _...@Aspect
не@Component
, и поэтому компоненты не будут сканироваться. Итак, либо зарегистрируйте его как bean-компонент, либо добавьте@Component
для его обнаружения, либо создайте@ComponentScan
для сканирования всех bean-компонентов, помеченных@Aspect
. В любом случае ваш аспект должен стать bean-компонентом, иначе он не существует, и ничего не произойдет. - person M. Deinum   schedule 24.03.2017@Loggable
, но мне нужен аспект для работы со всеми общедоступными методами в аннотированном классе - person Kirill   schedule 24.03.2017