Есть несколько вещей, которые могут быть здесь не правы, но в целом Spring AOP работает в Котлине. Я использовал очень похожий аспект в проектах Java и Kotlin, и он работает одинаково в любом из них.
Одна вещь, которую нужно помнить, Spring AOP основан на прокси , поэтому он может только рекомендовать не финал , public методы Spring beans , которые не вызываются из бина ( нет самовозбуждения ).
Для проекта Kotlin вы можете использовать плагин компилятора allopen
, чтобы классы и методы открывались по умолчанию.
Репозитории данных Spring обычно не снабжены @Repository
, но обычно выходят из подчиненного интерфейса org.springframework.data.repository.Repository
. Таким образом, ваш pointcut хранилища не будет работать. Попробуйте вместо этого:
@Pointcut("within(org.springframework.data.repository.Repository+)")
fun withinRepository() {}
При этом вы сможете регистрировать фактические вызовы методов SimpleJpaRepository
(реализация репозитория Spring Data по умолчанию).
У вас есть опечатка в вашем @Around
, сочетания клавиш сочетаются с &&
, а не &
. В любом случае, я бы попробовал сначала без pointcut пакета, чтобы посмотреть, работает ли pointcut bean.