首先我们看看RepositoryQuery接口极其子类的类图
上图很清晰的说明,RepositoryQuery接口包含SimpleJpaQuery,NativeJpaQuery,PartTreeJpaQuery,NamedQuery,StoredProcedureJpaQuery等(叶子节点)子类。
JpaRepositoryFactory类在动态实例化Repository接口时,其父类RepositoryFactorySupport定义了一个私有Map类变量:
private final Map<Method, RepositoryQuery> queries = new ConcurrentHashMap<Method, RepositoryQuery>();而动态实例化Repository接口时,将实例化一个QueryExecutorMethodInterceptor,为其增加监听和interceptor。上篇文章提到过,QueryExecutorMethodInterceptor是RepositoryFactorySupport的内部类,实现了org.aopalliance.intercept.MethodInterceptor拦截器接口。
实例化QueryExecutorMethodInterceptor时会直接执行其构造器,我们看到,给每个方法都创建了一个RepositoryQuery实例,并put到了上面所说的ConcurrentHashMap私有Map类变量中,代码如
1463


-RepositoryQuery的用途和分类&spm=1001.2101.3001.11974&articleId=53933151&d=1&t=3&u=1d53c9278a774fe1b8458c6432fac844)

被折叠的 条评论
为什么被折叠?



