¿Cómo se implementan realmente los repositorios de Spring Data?

He estado trabajando con el repositorio Spring Data JPA en mi proyecto durante algún tiempo y conozco los siguientes puntos:

En las interfaces del repositorio, podemos agregar los métodos comofindByCustomerNameAndPhone() (asumiendocustomerName yphone son campos en el objeto de dominio).Luego, Spring proporciona la implementación mediante la implementación de los métodos de interfaz del repositorio anteriores en tiempo de ejecución (durante la ejecución de la aplicación).

Estoy interesado en cómo se ha codificado esto y he examinado el código fuente y las API de Spring JPA, pero no pude encontrar las respuestas a las siguientes preguntas:

¿Cómo se genera e inyecta la clase de implementación del repositorio en tiempo de ejecución y los métodos?¿Spring Data JPA utiliza CGlib o alguna biblioteca de manipulación de bytecode para implementar los métodos e inyectar dinámicamente?

¿Podría ayudarme con las consultas anteriores y también proporcionar documentación respaldada?

Respuestas a la pregunta(1)

Su respuesta a la pregunta