1
resposta

Construtor Padrão

Professor Gabriel,

na aula Inversão de controle e injeção de dependências na prática , o container de inversão de controle tem como premissa que todo <tipo fonte .class> passado terá um construtor padrão disponível para todos os parâmetros exigidos? Se for isso, caso ele não encontre, o container não conseguirá criar uma instância do tipo passado inicialmente e lançará uma exceção?

1 resposta

Ola Lucas.

A classe que você indica para ser injetado ela precisa ser gerenciado pelo container (com @Service ou @Repository por exemplo).

Imaginando um caso que você tenha uma classe principal, e você pede para injetar um objeto em seu construtor, essa classe a ser injetada precisa ter @Service ou @Repository. Caso ela não tenha um construtor definido, o container acionará o padrão e injeta o objeto na sua classe principal. Mas caso ela tenha um construtor com parâmetros, cada uma das classes dos parâmetros precisam também ser gerenciado pelo container, e então ele vai instanciá-las primeiro, injetar esses objetos no construtor e só depois passa a injetar o objeto na sua classe principal. É uma cascata de chamadas.

Ou seja, ter ou não construtor não afeta a DI, basta que as classes dos parâmetros também esteja gerenciada pelo container.