На языке Kotlin я настроил аннотацию Spring AOP следующим образом:
@Target(AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
annotation class Authenticated(val roles: Array<String>)
... и класс аспектов, подобный этому:
@Aspect
@Component
class AuthenticationAspect {
@Around("@annotation(Authenticated) && args(roles)", argNames = "roles")
@Throws(Throwable::class)
fun authenticate(joinPoint: ProceedingJoinPoint, roles: Array<String>):Any? {
//.. do stuff
return proceed
}
}
И в свои методы добавляюаннотация, подобная этой:
@Authenticated(roles = ["read", "write"])
fun someMethod(msg: Pair) {
// do stuff...
}
Аннотация работает хорошо без аргументов, то есть аннотированный метод перехватывается.Но с аргументом «роли» он никогда не совпадает, и я понятия не имею, почему.Любая помощь будет высоко ценится.