1
resposta

Acerca do @Autowired

Por que não usar injeção por construtor ao invés da anotação “@Autowired”, ou seja, anotando com @RequiredArgsConstructor e definindo a propriedade com “private final “?

O IntelliJ chega a exibir um aviso dizendo não ser recomendável a injeção via anotação no Controller. Por que motivo?

Grato.

1 resposta

Olá Tony, tudo bem?

A injeção por construtor é uma forma recomendada de realizar a injeção de dependências em uma aplicação Spring, pois torna o código mais legível e fácil de testar. No entanto, a anotação "@Autowired" é uma forma mais simples e rápida de realizar a injeção de dependências, especialmente em classes com muitos atributos.

A anotação "@RequiredArgsConstructor" é uma alternativa interessante para a injeção por construtor, pois ela gera automaticamente um construtor com todos os atributos marcados como "final". Isso torna o código mais limpo e legível, além de garantir que os atributos não serão modificados após a inicialização.

Quanto ao aviso exibido pelo IntelliJ, ele pode estar se referindo ao fato de que a injeção via anotação pode tornar o código mais difícil de testar, pois é necessário utilizar mocks para simular as dependências injetadas. No entanto, isso não significa que a injeção via anotação seja proibida ou inadequada em todos os casos.

Espero ter ajudado a esclarecer suas dúvidas. Se tiver mais alguma pergunta, é só perguntar!

bons estudos!