Spring-data是否支持RepositoryMetadata扩展?

时间:2014-12-08 14:21:17

标签: java spring spring-data spring-cloud

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

示例:

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

  • 启用/禁用功能,允许将代码预加载到prod /或限制部署。

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

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

由于 标记

1 个答案:

答案 0 :(得分:0)

我认为您需要查看几个类和方法:

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

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

我不确定这对JPA有多好,因为你似乎想要改变那些并不是真正受Spring Data控制但是由持久性提供者评估的东西。例如,切换您可能更愿意解决DataSource定义,不同表映射,您需要在持久性提供程序级别上进行自定义的架构等。