9. Расскажите про аннотацию @Resource

9. Расскажите про аннотацию @Resource

UNKNOWN

Java-аннотация @Resource может применяться к классам, полям и методам. Она пытается получить зависимость: сначала по имени, затем по типу, затем по описанию (Qualifier).

Имя извлекается из имени аннотируемого сеттера или поля, либо берется из параметра name.

При аннотировании классов имя не извлекается из имени класса по умолчанию, поэтому оно должно быть указано явно.

Указав данную аннотацию у полей или методов с аргументом name, в контейнере будет произведен поиск компонентов с данным именем, и в контейнере должен быть бин с таким именем:

@Resource(name="namedFile")

private File defaultFile;

Если указать её без аргументов, то Spring Framework поможет найти бин по типу.

Если в контейнере несколько бинов-кандидатов на внедрение, то нужно использовать аннотацию @Qualifier:

@Resource

@Qualifier("defaultFile")

private File dependency1;

@Resource

@Qualifier("namedFile")

private File dependency2;

Разница с @Autowired:

  • ищет бин сначала по имени, а потом по типу;
  • не нужна дополнительная аннотация для указания имени конкретного бина;
  • @Autowired позволяет отметить место вставки бина как необязательное @Autowired(required = false);
  • при замене Spring Framework на другой фреймворк, менять аннотацию @Resource не нужно.

Предыдущий вопрос: 8. Расскажите про аннотацию @Autowired

Следующий вопрос: 10. Расскажите про аннотацию @Inject

Все вопросы по теме: список

Все темы: список

Вопросы/замечания/предложения/нашли ошибку: напишите мне

Report Page