Boa tarde (noite, dia, madrugada...)
Não ficou muito claro pra mim o porquê de instanciar na service, jogar no construtor a declaração private final e, depois, no SpringDataApplication a gente precisa de novo colocar o private final, jogar ele no construtor dele e instanciar.
É tão confuso que fiquei com a dúvida rs.
Explicando o motivo da dúvida: quando eu precisar criar esse tipo de aplicação, sempre terei que fazer esse movimento?
Explicando em código e exemplos a dúvida:
Na class RelatorioFuncionarioDinamico
, fizemos a seguinte declaração:
private final FuncionarioRepository funcionarioRepository;
depois, abrimos o construtor e dizemos que o argumento do método aponta para para esse final:
public RelatorioFuncionarioDinamico(FuncionarioRepository funcionarioRepository) {
this.funcionarioRepository = funcionarioRepository;
}
Mas lá no SpringDataApplication
a gente fez de novo o mesmo movimento, mas agora para a class RelatorioFuncionarioDinamico.
declarou:
private final RelatorioFuncionarioDinamico relatorioFuncionarioDinamico;
E no construtor do SpringDataApplication fizemos mesmo movimento da class service:
public SpringDataApplication(<(...)outrasSemelhantes>,
RelatorioFuncionarioDinamico relatorioFuncionarioDinamico) {
//outros semelhantes (...)
this.relatorioFuncionarioDinamico = relatorioFuncionarioDinamico;
}
Por que fizemos isso? Eu sempre terei que fazer isso? Qual motivo de usar o final? Acho que essa minha principal dúvida, não ficou claro o uso do final e, depois, no construtor, a gente instancia ele. O que é do Spring aqui e o que é simplesmente questão do Java?
Obrigado!