Bom tem uma duvida que eu tenho eu tenho com o spring boot relacionado a injeção de dependencia
Bom eu sei que dependencia é qualquer tipo de relacionamento, e para injetarmos a dependencia existe o meio convencional (sem ser spring) pelos construtor e metodo setter. Ex: new Algo(obj) ; setAlgo(obj)
no Spring Boot a injeção de dependencia é uma unica instancia em toda a aplicação que é feito com a anotação @Autowired
a duvida é, vou usar como exemplo uma classe cliente que tem compra algo
public class Cliente{
private Compra compra;
/* getter e setter omitidos */
}
public class ClienteController{
@Autowired
private Compra compra;
@Autowired
private Cliente cliente;
public void fazAlgo(){
cliente.setCompra(compra);
}
}
A duvida é,só tem esse jeito de fazer a injeção, não tem outro jeito tp
public void metodoTeste(){
@Autowired
Compra compra;
cliente.setCompra(compra)
}
ou até mesmo pelo construtor de alguma forma
por que essa pergunta, assim numa controller não parece fazer nenhuma diferença, porém eu fiz um caso usando um mapa, e ficou uma coisa bem esquisita
public class Facade{
private Map<String,StrategyToCalc> rn = new HashMap<String, StrategyToCalc>();
@Autowired private CalculoInss calculoInss;
@Autowired private CalculoIcms calculoIcms;
public Facade(){
}
private void startMaps(){
rn.put("inss",calculoInss);
rn.put("icms",calculoIcms);
}
public void executeStrategy(String param){
startMaps();
StrategyToCalc strategy = rn.get(param);
}
}
moral eu tive que criar um metodo para injetar as dependencias dentro do mapa e tenho q ficar lembrando, sendo que sem a injeção de dependencia eu poderia fazer o new direto dentro do construtor.
Não sei se ficou bem explicado o porque de eu estou fazendo isso.