No start da aplicação (aonde você chama a configuração), você pode usar o scannotation para que ele procure as classes que possuem as anotações.
Assim, você consegue ter um Set de classes que deverão ter o valor setado no field que está anotado.
Tome o cuidado de que a classe Class não implementa hashCode() e equals() então seria interessante usar o nome completo dela ou um wrapper para essa class.
O wrapper pode até ser interessante pois ele pode conter o field que contém a annotation que você quer e qual é a annotation que você quer.
Só precisa lembrar de implementar hashCode() e equals() para usar em um Set, assim, quando você fizer o set.contains(obj) ele funciona precisamente e é mais rápido que uma lista, dependendo da quantidade de objetos e da quantidade de requests que seu interceptor irá receber.
Para setar o field, você pode usar o Mirror para pegar o setter. Caso não exista setter, você faz um fallback para setar o valor próprio field (usando o setAcessible(true)).
Precisa pensar se compensa obrigar que todos os fields anotados precisam ser non-finals.
Ou deve existir alguma alternativa com reflection para setar um field final mesmo. (Isso aqui não me parece muito bom)