Я прочитал в некоторых сообщениях о Spring MVC
и Portlets
, что инъекция в поле не рекомендуется. Потому что я пытаюсь получить. Так что я спросил себя, могу ли я использовать инъекции поля, и я не могу ответить на него. Как я понимаю это инъекции поле если вы впрыснуть Bean
в атрибут с @Autowired
как это:Что такое полевая инъекция и как ее избежать?
CartController.java:
...
@Autowired
private Cart cart;
...
BookshopConfiguartion.java:
@Configuration
public class BookShopConfiguration {
@Bean
public Cart cart(){
return new Cart();
}
//more configuration
My Cart.java
предназначен для хранения и предоставления информации о книги в корзине.
В ходе моих исследований я прочитал о инъекции конструктора:
MyComponent.java:
...
public class MyComponent{
private Cart cart;
@Autowired
public MyComponent(Cart cart){
this.cart = cart;
}
...
Каковы преимущества и недостатки этих двух типов инъекций?
EDIT 1: Поскольку этот вопрос помечено как дубликат this question я проверил его. Потому что нет никаких примеров кода ни в вопросе, ни в ответах, которые мне не понятны, если я прав с моим предположением, какой тип инъекции я использую.
Это вообще нехорошая идея, и нехорошо сказать миру: «инъекции в полете следует избегать». Покажите профи и контрас и позвольте другим самим решать;) У многих людей есть другой опыт и собственный взгляд на вещи. – dit
Это может быть здесь, но есть и другие случаи, когда сообщество приходит к общему мнению, чтобы отговорить что-то. Возьмем, к примеру, венгерскую нотацию. – Jannik
Вы даете несколько хороших моментов в качестве проверяемости и видимости зависимости, но я не согласен со всеми. Инъекция конструктора не имеет недостатков? Желательно иметь 5 или 6 полей для ввода в класс, который выполняет реальные композиции вызова. Я тоже не согласен с вами с неизменностью. Наличие окончательных полей не является обязательным для того, чтобы класс неизменен. Это предпочтительнее. Это совсем другое. – davidxxx