1
resposta

Em um outro curso a instanciação foi feita com anotação Autowired. por que foi criado um construtor SpringDataApplication passando o repository?

Qual a diferença entre usar os dois códigos abaixo?

@Autowired
private CargoRepository repository;

e

private CargoRepository repository;

public SpringDataApplication( CargoRepository repository ){
    this.repository  = repository ;
}

Se a ideia é escrever menos e usar o Spring para ajudar, não entendi o uso da forma de baixo do curso atual?

1 resposta

Olá Alexandre, tudo bem? A diferença é praticamente nenhuma, funciona da mesma forma, porém no vídeo ele usa o atributo repository como final e então o @Autowired não pode ser utilizado nesse caso, ele retorna um erro de compilação informando que o atributo não foi inicializado, mas pasta remover o final e deve funcionar corretamente. Mas falando didaticamente é mais simples de entender o que está acontecendo quando criamos um construtor e fazemos o processo de injeção de dependência através do construtor:

private CargoRepository repository;

public SpringDataApplication( CargoRepository repository ){
    this.repository  = repository ;
}

E existe uma outra questão, esse curso faz parte da formação Spring Framework e seguindo essa trilha de cursos, esse curso de Spring Data JPA é o primeiro contato com o Spring Framework de fato e usando o @Autowired já de inicio pode ser um pouco mais complicado principalmente porque o foco do curso é o Spring Data JPA.

Espero ter esclarecido sua dúvida!