1
resposta

Autowired no contrutor ou em obj

Qual a melhor opção, anotar @Autowired no construtor ou para cada obj que queira injetar realizar a anotação? Existe diferença pois o Spring vai gerenciar isso?

1 resposta

A injeção de construtor tem algumas vantagens:

  • as dependências são claramente identificadas. Não há como esquecer uma ao testar ou instanciar o objeto em qualquer outra circunstância (como criar a instância do bean explicitamente em uma classe de configuração)
  • as dependências podem ser finais, o que ajuda na robustez e na segurança
  • você não precisa de reflection para injetar as dependências. O InjectMocks ainda é utilizável, mas não é necessário. Você pode criar mocks e injetá-los simplesmente chamando o construtor

Artigo: http://olivergierke.de/2013/11/why-field-injection-is-evil/