【问题标题】:How and Where was the my repository interface instanced by SimpleJdbcRespository?SimpleJdbcRespository 实例化的我的存储库接口如何以及在哪里?
【发布时间】:2019-04-16 03:33:36
【问题描述】:
我创建了一个由CrudRepository 扩展的自定义存储库接口。
我刚刚在StartApplication 中使用了@EnableJdbcRepositories。
当我测试自定义存储库中的方法时,例如save(T t),我看到它被SimpleJdbcRespository.class 实例化。
我对此感兴趣,我想知道SimpleJdbcRespository 是如何以及在哪里创建并实现了我的自定义存储库接口。
我应该调试哪一行代码?
【问题讨论】:
标签:
java
spring-data
spring-data-jdbc
【解决方案1】:
所有 Spring Data JDBC 存储库都由 JdbcRepositoryFactory 创建,它使用 SimpleJdbcRepository 作为 CrudRepository 方法的实现。
对于存储库接口中的其他方法JdbcQueryLookupStrategy 进行咨询,该接口确定如何以RepositoryQuery 的形式为要执行的方法获取正确的查询。
目前只有它的实现:JdbcRepositoryQuery
如果执行此类方法时某些事情没有按预期工作。 JdbcRepositoryQuery.execute(Object[] objects) 是调试的良好开端。
您可能还想查看其中使用的executor 是如何构造的。