I always wonder about classes that are created at Compile time, like for example in Spring DATA, i could simply create interface like this
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByLastname(String lastname);
User findByEmailAddress(String emailAddress);}
As I know Spring Data create classes with the appropriate implementation for this interface, is that right? and if right how does it do it? is there a specific API that is commonly used for creating classes that implement interfaces?