Spring-data是否支持RepositoryMetadata扩展



我正在向所有存储库(JPA 模块(添加自定义行为以添加我们自己的查询 api/语法。我们希望从代码外部化,以便可以在运行时更改它(目前这些注释作为自定义注释添加到域类中(。

例子:

  • 通过设置动态角色/列安全矩阵来确保数据安全(角色A可以访问,即仅添加过滤器的行子集,roleB具有一些敏感属性被屏蔽,...(

  • 启用/禁用功能,允许将代码预加载到生产/或有限的推出。

  • 覆盖架构名称(允许代码指向不同的目标沙盒表以进行各种测试工作(

在我的 Repository Impl 类中,我可以读取此配置并将其存储为属性,但我想知道扩展 Spring Data 域类元数据是否更有意义(如果支持((认为这是 RepositoryMetadata 类(。

谢谢马克

我认为有几个类和方法你想看看:

  • RepositoryFactorySupport.getRepositoryInformation(…)是否要挂钩到存储库元数据。
  • JpaRepositoryFactory.getEntityInformation(…)是否要挂钩到实体元数据。这就是存储库实现的工作。

我认为后者对你来说最有趣。例如,MongoDB模块对其进行自定义,以允许@Document注释的属性collectionName中的Spring Expression语言动态计算要在每次存储交互时与之交互的集合。

我不确定这与 JPA 的效果如何,因为您似乎想要更改那些实际上不在 Spring Data 控制之下而是由持久性提供程序评估的内容。例如,要切换模式,您可能更愿意处理DataSource定义、不同的表映射、您需要在持久性提供程序级别进行自定义等。

最新更新