Java SpringDataJPA中的自定义方法是如何实现和执行的?

Java SpringDataJPA中的自定义方法是如何实现和执行的?,java,spring,hibernate,spring-data-jpa,spring-data,Java,Spring,Hibernate,Spring Data Jpa,Spring Data,我在我的项目中使用spring data jpa,我有以下几段代码: 我的存储库: @Repository @Transactional public interface StudentRepository extends PagingAndSortingRepository<Student, Long> { List<Student> findByIdIn(List<Long> ids); } 在我服务班的某个地方,我 @Autowired Stu

我在我的项目中使用spring data jpa,我有以下几段代码:

我的存储库:

@Repository
@Transactional
public interface StudentRepository extends PagingAndSortingRepository<Student, Long> {

  List<Student> findByIdIn(List<Long> ids);

}
在我服务班的某个地方,我

@Autowired
StudentRepository  studentRepository;
然后我从服务层调用findByIdIn,如下所示:

studentRepository.findByIdIn(listOfIds);
findByIdIn(listOfIds)方法工作得非常好,一切正常

我知道findByIdIn()方法的实现是由spring数据jpa提供的

但我不知道它的实施情况如何? 它的具体实施是什么? 这些方法是否在运行时生成取决于方法名称?如果是,它们是如何动态生成和执行的


谢谢

您可以深入研究一下Spring代码的核心,看看它是如何工作的(),但基本上,它是在启动时将接口方法解析为HQL的


您可以只在一个不存在的字段中编辑一个方法名,在启动时您会得到一个错误,说没有这样的字段。

请浏览这篇文章。这可能会有帮助:)这篇文章很好地解释了当我们用@Query注释我们的附加方法时的流程。但在本例中,我没有用@Query注释我的方法。
studentRepository.findByIdIn(listOfIds);