Вы можете посмотреть на использование AspectJ для этого, так как оно будет соответствовать аннотациям. Затем вы можете использовать внешний аспект, чтобы решить, соответствует ли пользователь требованиям для использования этого метода.
Spring позволяет вам использовать AspectJ, и я бы посоветовал вам, если это возможно, делать это не во время выполнения, а во время компиляции, поскольку нет причин платить за использование этого аспекта при каждом запуске приложения , Но если вы должны сделать это во время выполнения, то это выполнимо, для меня я стараюсь максимально использовать время компиляции.
Возможно, вы захотите взглянуть на AspectJ In Action (http://www.manning.com/laddad2/), но вот пример оттуда:
Образец подписи:
* *(@RequestParam
(@Sensitive *))
Описание
*Any method with one parameter marked with the @RequestParam annotations and the parameter’s type is marked with the @Sensitive annotation.*
Пример
void create(@RequestParam
MedicalRecord mr), assuming
MedicalRecord carries the
@Sensitive annotation.