如何查看Spring Data MongoDB生成的存储库实现?
Spring数据何时生成存储库的实现?在编译时还是运行时?我可以看到Spring数据生成的实现库实现吗?tl;博士 不,原因很简单:没有代码生成。该实现基于代理和方法拦截器,该拦截器将调用执行委派到正确的位置 细节 实际上,方法执行可以由3种类型的代码支持:如何查看Spring Data MongoDB生成的存储库实现?,mongodb,repository,spring-data,spring-data-mongodb,Mongodb,Repository,Spring Data,Spring Data Mongodb,Spring数据何时生成存储库的实现?在编译时还是运行时?我可以看到Spring数据生成的实现库实现吗?tl;博士 不,原因很简单:没有代码生成。该实现基于代理和方法拦截器,该拦截器将调用执行委派到正确的位置 细节 实际上,方法执行可以由3种类型的代码支持: 特定于商店的crudepository实现。查看名为Simple(Jpa | Mongo | Neo4 |…)存储库的类型(请参阅特定于Jpa的类型)。它们对crudepository和paging和sortingrepository中的所
crudepository
实现。查看名为Simple(Jpa | Mongo | Neo4 |…)存储库的类型
(请参阅特定于Jpa的类型)。它们对crudepository
和paging和sortingrepository
中的所有方法都有“真实”的实现
QueryExecutorMethodInterceptor.doInvoke(…)
有效执行(请参阅)。找到委派目标并调用它基本上是一个三步过程。实际执行是在名为(Jpa | Mongo | Neo4j…)QueryExecution
的类中完成的(例如,请参见此类)
QueryExecutorMethodInterceptor
调用
PartTree
。它接受一个方法名和一个基类型,并将返回一个已解析的类似AST的结构,或者在解析属性等失败时抛出一个异常
后者在名为
PartTree(Jpa | Mongo | Neo4j |…)查询的类中实现
,并委托其他组件实际创建特定于存储的查询。例如,对于JPA来说,有趣的部分可能位于JpaQueryCreator.PredicateBuilder.build()
(请参阅)。恐怕这两条评论与问题完全无关。嗨,奥利弗,你能解释一下QueryExecutorMethodInterceptor是如何工作的吗?委托和调用是什么时候发生的?@xabhi-你可能想看看这个答案。