Spring @Autowire em Propriedades x Construtor
Portanto, desde que eu uso o Spring, se eu escrever um serviço com dependências, faria o seguinte:
@Component
public class SomeService {
@Autowired private SomeOtherService someOtherService;
}
Agora, deparei-me com um código que usa outra convenção para alcançar o mesmo objetivo
@Component
public class SomeService {
private final SomeOtherService someOtherService;
@Autowired
public SomeService(SomeOtherService someOtherService){
this.someOtherService = someOtherService;
}
}
Ambos os métodos vão funcionar, eu entendo isso. Mas existe alguma vantagem em usar a opção B? Para mim, ele cria mais código na classe e no teste de unidade. (Ter que escrever o construtor e não poder usar o @InjectMocks)
Tem algo que estou perdendo? Existe mais alguma coisa que o construtor conectado automaticamente além de adicionar código aos testes de unidade? Essa é a maneira mais preferida de fazer injeção de dependência?