Для производственного кода разумно объявить зависимости явно, а не использовать autowire, чтобы в производственной настройке было меньше движущихся частей.Это похоже на хорошую практику использования только полностью определенных операторов импорта вместо import my.super.project.dao.*
(кстати, автоматическая разводка очень полезная функция для интеграционных тестов)
Так что подключатьХороший путь к производству - это просто вставка зависимостей старого конструктора в конечные поля.Использование окончательных полей, где это возможно, минимизирует изменчивость .
Класс обслуживания, который получает даос посредством инъекции:
public class CompanyService implements ICompanyService {
private final EmployeeDao employeeDao;
private final DepartmentDao departmentDao;
public CompanyService(EmployeeDao employeeDao, DepartmentDao departmentDao) {
this.employeeDao = employeeDao;
this.departmentDao = departmentDao;
}
...
}
И затем контроллер получает сервис посредством инъекции (используятип интерфейса):
@Controller
public class MyController
{
private final ICompanyService companyService;
public MyController(ICompanyService companyService) {
this.companyService = companyService;
}
@RequestMapping("/data")
public @RequestBody Data getData(@RequestParam String id)
{
return companyService.queryForData(id);
}
}