Новое ключевое слово выделило новое пространство памяти в куче для объекта. Затем конструктор инициализирует состояние объекта (свойства объекта).
. @Autowired просит Spring Framework ввести бин по типу .
. Вы создали приложение, которое имеет контроллер, сервис и слой дао. Эти слои в основном не содержат состояние приложения / бизнес-данных. Они обертывают функциональность. Бизнес-логика / Logi c для общения с БД и др. c. Так что из Сервиса, когда вы хотите вызвать save (entity) в слое dao, вы сделаете -> new DAO (). Save (entity) ...... Это бесполезная трата памяти, так как вы создаете новый Object каждый раз просто использовать функциональность. Эффективный способ сделать это -> Создать одноэлементный экземпляр службы -> один экземпляр для всего приложения, а затем внедрить их в другие места для использования функциональности.
Spring обрабатывает это для вас .. @ Service / @ REstController / @ Компонент в основном говорит Spring, чтобы создать экземпляр этого класса для вас - область действия по умолчанию - Singleton. И где бы вы ни упоминали -> @Autowired, он вводит этот компонент (по типу) в запрошенный класс, чтобы вы могли использовать эту функциональность.
Это в основном инверсия управления. Я придерживаюсь мнения, что разум отвечает за ответственность / контроль за созданием экземпляров, а внедрение их в нужных вам местах инвертируется от вас в среду. А также вы удаляете сильную связь путем внедрения по типу (обычно интерфейс), и пружина находит значение интерфейса и вводит его там, где вы упомянули @Autowired. В случае, если есть несколько имплов, вам нужно назвать каждый импл (или именем по умолчанию является имя класса с первым регистром в маленьком регистре - пожалуйста, подтвердите это один раз, потому что я не помню правильно) и используйте @Qualified (name), чтобы упомянуть Spring, который подразумевает, что вы хотите для внедрения.
Теперь ваша модель / сущность -> Это в основном Java bean -> имеющие свойства и методы доступа для доступа к этим свойствам. Они будут содержать состояние вашего приложения. Таким образом, каждый раз, когда новый пользователь регистрируется, вам нужен новый объект User, чтобы обойти слои для выполнения некоторой логики c и затем сохранить ее в БД. Таким образом, вы создадите новый объект с новым ключевым словом.