Подскажите пожалуйста, в чем разница между @Autowired, @Required и @Resource
Ответ
@Required отмечает свойства бина, которые обязательно должны быть установлены.
@Autowired используется для автоматического внедрения зависимости. Вы отмечаете им некое свойство в бине и Spring сам создаст экземпляр класса, подходящего для этого свойства.
@Resource, в отличие от @Autowired, позволяет передать в качестве зависимости конкретный бин по его имени.
Все достаточно неплохо описано в документации
Пример.
class Foo {
private Bar bar;
public void setBar(Bar bar) {
this.bar = bar;
}
}
Если вы хотите, чтобы Spring сам нашел подходящий класс и передал его экземпляр в setBar() проставьте перед методом аннотацию @Autowired
Если вы хотите передать конкретный бин, в качестве параметра setBar(), воспользуйтесь аннотацией @Resource(name="myBarBean")
Если свойство foo обязательно должно заполняться, добавьте аннотацию @Required
Комментариев нет:
Отправить комментарий