Аннотации не обеспечивают никакого поведения для вашего кода сами по себе. Все эти аннотации - это то, что подразумевает их название ... дополнительная информация, прикрепленная к вашему коду. Сила аннотаций проявляется, когда у вас есть код, который использует самоанализ во время выполнения, чтобы посмотреть определения вашего скомпилированного кода и выполнить действия на основе этих аннотаций.
Spring Framework делает это экстенсивно. Он просматривает аннотации в вашем коде и использует их, чтобы решить, как подключить ваше приложение. Он часто создает классы-обертки вокруг ваших собственных классов, так что он может внедрить свою собственную логику поверх вашего кода.
Вы, конечно, можете сделать что-то подобное самостоятельно, но это не тривиально. Я бы посоветовал взглянуть на AspectJ или какую-то другую аспектно-ориентированную программу программирования (AOP) . Я бы предложил изучить идею аспектно-ориентированного программирования в целом, так как то, что вы хотите сделать, является одной из самых распространенных проблем, которые он пытается решить. Использование Spring Framework также может помочь в решении таких проблем. В него входит модуль для выполнения АОП «Spring AOP».
Независимо от того, как вы поступите с аннотациями, вы будете много изучать и, возможно, реструктуризировать свой код для использования сторонних пакетов. Возможно, вы захотите отказаться от идеи использования аннотаций и просто поместить простой код регистрации в основную логику.
Я только что прогуглил для «использую аспектно-ориентированное программирование для аудита» и получил много интересных хитов. Вот один такой хит. Я не знаю, является ли это лучшим ресурсом для ваших целей, но он даст вам представление о том, о чем я говорю здесь:
http://idanfridman.com/2014/05/13/clean-auditing-infrastructure-for-your-app-using-aop-custom-annotations-and-reflection/