Injeção de dependências seria poder usar os metodos de uma classe sem ter que instanciar ela, está certo o raciocínio ?
Injeção de dependências seria poder usar os metodos de uma classe sem ter que instanciar ela, está certo o raciocínio ?
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.