Я должен признать, что не совсем понял значение @Priority, однако могу сказать, что если вы хотите реализовать эту функцию весной, вам, вероятно, стоит взглянуть на Bean Post Processors.
BeanPostProcessors - это, по сути, привязка к процессу создания бина весной, предназначенная для изменения поведения бина.
Помимо прочего, они позволяют оборачивать базовый компонент в прокси-сервер (CGLIB / java.lang.Proxy, если вы работаете с интерфейсами или даже программно используете Spring AOP), эти прокси-серверы могут предоставить хук для выполнения метода, который может прочитать ваши аннотации (например, упомянутый @KeyParameter) и выполнение кода способом, аналогичным коду Aspect, который вы уже используете.
Не все постпроцессоры бинов переносят бин в прокси. Например, если вы хотите реализовать BPP, использующий "@Autowire", вы вернете тот же компонент, просто "внедрив" (прочитайте, поместите с помощью отражения) его зависимости. С другой стороны, если вы хотите реализовать с поведением BPP @Transactional, тогда да, вы должны заключить бин в прокси, который позаботится о возможностях управления транзакциями до и после выполнения метода.
Вполне нормально иметь бин пружины, который "изменяется" многими постпроцессорами, некоторые из них обернут его в прокси, другие просто изменят и вернут тот же бин, если есть много BPP, которые обернув компонент в прокси, мы получим «прокси внутри прокси внутри прокси» (вы поняли). Каждый слой прокси будет обрабатывать одно конкретное поведение.
В качестве примера, я предлагаю вам взглянуть на существующие постпроцессоры Spring или, например, на исходный код следующей библиотеки: Библиотека интеграции учета Spring Spring
Эта библиотека содержит некоторые реализации постпроцессоров, которые позволяют интегрировать инфраструктуру метрик путем определения аннотаций для методов Spring Beans.