Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Injeção de Dependências seria...

Injeção de dependências seria poder usar os metodos de uma classe sem ter que instanciar ela, está certo o raciocínio ?

1 resposta
solução!

Seria poder "receber" um objeto já instanciado.

Perceba: Não há como fugir de instanciar um objeto. O que o contêiner faz é instanciá-lo para você e colocá-lo na classe que você precisa.

Há alguma formas de se "receber" essa dependência ou, em outras palavras, ter a dependência injetada:

Tendo:

@Service // ou @Repository ou @Controller ou outros
public class Bar {
        //.... implementação        
}

Seguem algumas possibilidades:

1 - Field:

public class Foo {
        @Autowired
        private Bar bar;
        // ...
}

2 - Constructor:

public class Foo {

        private Bar bar;

        @Autowired // Aqui, essa anotação é opcional, se esse for o único construtor da sua classe;
        public Foo(Bar bar) {
                this.bar = bar;
        }

}

3 - Setter:

public class Foo {
        private Bar bar;

        @Autowired
        /* 
        Sem a anotação abaixo,
        caso o bean com o qual temos dependência não exista por algum motivo,
        o objeto será construído com bar=null.
        Colocar @Required, faz com que a injeção seja mandatória,
        assim como acontece com os 2 exemplos supracitados.
        */
        @Required
        public void setBar(Bar bar) {
                this.bar = bar;
        }
}

Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software