Какова цель весенней загрузки автоматической аннотации на конструкторе? - PullRequest
0 голосов
/ 16 февраля 2020

какова цель аннотации @Autowired на конструкторе? В чем разница между аннотированным и аннотированным конструктором? Спасибо.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2020

В чем разница между аннотированным и аннотированным конструктором?

В Spring 3 или ниже аннотация на конструкторе обязательна, чтобы Spring рассматривал конструктор как способ создавать экземпляры зависимостей bean и inject, представленных в параметрах.
Spring 4 и более поздние версии не требуют аннотации для этого. Вам просто нужно объявить конструктор с любым параметром, чтобы достичь этого.
Так что в последних версиях Spring не загромождайте код аннотацией:

public Foo(Bar bar){
  this.bar = bar;
}
0 голосов
/ 16 февраля 2020

Функция автоматического подключения позволяет вам вводить объектную зависимость неявно.

Без автоматического подключения вы должны инициировать объект следующим образом:

    public class SomeOperation() {

        private CarService carService;

        public SomeOperation() {

            carService = new CarServiceImpl();
        }
    }

Но если вы аннотируете с помощью @Autowired, вы этого не сделаете должен инициировать объект. Фреймворк принесет класс, который реализует carService и инициирует ваш объект с ним.

    public class SomeOperation() {

        private CarService carService;

        @Autowired
        public SomeOperation(CarService carService) {

            this.carService = carService;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...