Итак, поскольку я использовал Spring, если бы я должен был написать службу с зависимостями, я бы сделал следующее:
@Component
public class SomeService {
@Autowired private SomeOtherService someOtherService;
}
Теперь я запускаю код, который использует другое соглашение для достижения той же цели
@Component
public class SomeService {
private final SomeOtherService someOtherService;
@Autowired
public SomeService(SomeOtherService someOtherService){
this.someOtherService = someOtherService;
}
}
Оба эти метода будут работать, я это понимаю. Но есть ли преимущество в использовании опции B? Для меня он создает больше кода в классе и unit test. (Необходимо написать конструктор и не использовать @InjectMocks)
Есть ли что-то, что мне не хватает? Есть ли еще что-то, что делает автоуведованный конструктор, помимо добавления кода в модульные тесты? Является ли это более предпочтительным способом инъекции зависимостей?