Como os repositórios do Spring Data são realmente implementados?
Trabalho com o repositório Spring Data JPA em meu projeto há algum tempo e conheço os pontos abaixo:
Nas interfaces do repositório, podemos adicionar os métodos comofindByCustomerNameAndPhone()
(assumindocustomerName
ephone
são campos no objeto de domínio).Em seguida, o Spring fornece a implementação implementando os métodos da interface do repositório acima em tempo de execução (durante a execução do aplicativo).Estou interessado em saber como isso foi codificado e observei o código-fonte e as APIs do Spring JPA, mas não consegui encontrar respostas para as perguntas abaixo:
Como a classe de implementação do repositório é gerada no tempo de execução e nos métodos sendo implementada e injetada?O Spring Data JPA usa CGlib ou qualquer biblioteca de manipulação de bytecode para implementar os métodos e injetar dinamicamente?Você poderia ajudar com as perguntas acima e também fornecer qualquer documentação suportada?