Разница между автозапуском и использованием нового ключевого слова в классе autowired в spring boot?

#java #spring #spring-boot #autowired #spring-annotations

#java #весна #spring-boot #autowired #spring-аннотации

Вопрос:

 @Autowired
private EmployeeService employeeService;
 

против

 @Autowired
private EmployeeService employeeService = new EmployeeService();
 

Отличается ли использование new EmployeeService() в классе autowired от простого использования new EmployeeService() ?

Ответ №1:

Если вводится компонент for @Autowired , он переопределяет созданный вами объект. Но если не создан компонент, у вас есть запасной вариант (в данном случае new EmployeeService() . Это может быть полезно для тестов, но это своего рода антишаблон, потому что обычно вам просто нужно одно из обоих поведений.

Комментарии:

1. Я считаю это анти-шаблоном и для тестов. Даже в тестах, которые вы хотите точно знать, что и где вводится, подобные утверждения скрывают код.