Opa pessoal, tudo bem?
Gostaria de entender melhor o funcionamento da interface no geral, através do exemplo da interface CrudRepository.
No projeto dessa aula criamos uma interface CargoRepository que extende de outra interface CrudRepository, conforme código abaixo:
@Repository
public interface CargoRepository extends CrudRepository<Cargo,Integer> {
}
Na classe CrudCargoService, em nenhum momento foi implementada a interface CargoRepository, e também não foi instaciada(que é um conceito que já compreendi que as interfaces "não podem" ser instaciadas). No código há apenas o atributo CargoRepository que é passado no construtor da Classe CrudCargoService, conforme abaixo:
private final CargoRepository cargoRepository;
public CrudCargoService(CargoRepository cargoRepository) {
this.cargoRepository = cargoRepository;
}
Minha dúvida é: como o Java faz para que essa classe CrudCargoService utilize os métodos da interface sem implementá-la? O Java meio que "cria uma instância" dessa interface por baixo dos panos ao fazer a injeção de depências no construtor? Alguém poderia me ajudar a compreender melhor isso?
Desde já agraço. Forte Abraço a todos