Позвольте мне ответить на ваш вопрос с API аннотаций.
@Retention(value=RUNTIME)
@Target(value={CONSTRUCTOR,FIELD,METHOD})
public @interface Autowired
@Target(value={TYPE,FIELD,METHOD})
@Retention(value=RUNTIME)
public @interface Resource
Если вы хотите знать, когда вы можете использовать аннотации перейти к API и обратить особое внимание на значения @Target.
ANNOTATION_TYPE Краткое описание типа
КОНСТРУКТОР Конструктор Декларация
ПОЛЕ поле декларация (включает в себя константы перечислений)
LOCAL_VARIABLE Локальная переменная декларация
МЕТОД Метод декларации
ПАКЕТ Пакет декларации
ПАРАМЕТР Параметр Декларация
ТИП класса, интерфейс (вк ng) или декларация перечисления
Общая аннотация может использоваться только в тех местах, для которых они определены в значениях @Target.
Я не вижу в связанном вопросе ответа, на какой уровень эти аннотации применяются к – fgonzalez