Как Spring генерирует реализацию интерфейса-репозитория?

Есть такой интерфейс:

public interface PersonRepository extends Repository<User, Long> {

  List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);

  // Enables the distinct flag for the query
  List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);
  List<Person> findPeopleDistinctByLastnameOrFirstname(String lastname, String firstname);

  // Enabling ignoring case for an individual property
  List<Person> findByLastnameIgnoreCase(String lastname);
  // Enabling ignoring case for all suitable properties
  List<Person> findByLastnameAndFirstnameAllIgnoreCase(String lastname, String firstname);

  // Enabling static ORDER BY for a query
  List<Person> findByLastnameOrderByFirstnameAsc(String lastname);
  List<Person> findByLastnameOrderByFirstnameDesc(String lastname);
}

Расскажите, пожалуйста, как Spring–у удаётся сгенерировать реализацию этого интерфейса при компиляции программы? В репозитории на Github я не смог найти эту логику, как это всё происходит. Желательно, подскажите справочники, с помощью которых я смогу создать что-то подобное — буду благодарен.


Ответы (0 шт):