2015-03-24 2 views
1

Мой вопрос быстрый, мы используем @Autowire для подключения bean-компонентов по типу и @Resource по имени, но я всегда видел эти аннотации, используемые для проводки переменных внутри класса, могут ли они быть используется также на уровне класса, чтобы связать все свойства объекта?@Autowiring и @Resource аннотации весной

Спасибо

+0

Я не вижу в связанном вопросе ответа, на какой уровень эти аннотации применяются к – fgonzalez

ответ

1

Позвольте мне ответить на ваш вопрос с 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.

+0

Итак, тогда невозможно применить эти аннотации к самому классу, чтобы связать все свойства данного объекта, который был мой первоначальный вопрос. Благодаря!! – fgonzalez

0

Да, просто посмотрите на код или Javadoc

  • Autowired: CTOR (но только один), поле, метод, аннотаций

    @Target ({ElementType .CONSTRUCTOR, ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})

  • ресурсов: тип, поле, метод

    @Target ({TYPE, FIELD, МЕТОД})

Смежные вопросы