如何禁用Spring Data REST存储库的默认公开?

2022-09-01 07:18:27

我有一个使用spring-data-rest的项目,并且有一个只使用Spring Data的依赖项目。这两个项目都有spring数据存储库,用于实现其存储库接口,但我只想导出父项目中的存储库。@EnableJpaRepositories

这是我的问题:有没有办法将Spring Data REST配置为仅公开父项目中资源的rest端点,而不必显式注释依赖项目中的每个存储库?@RepositoryRestResource(exported = false)

如果我只能通过禁用它来做到这一点,更糟糕的是,没有其他具有不同用例的项目能够为这些存储库启用REST端点,我的依赖项目将不得不包含Spring Data REST,仅用于...@RepositoryRestResource


答案 1

当我正在寻找这个特定的设置时,回到这里。看起来现在已经实现了。在这种情况下,您需要设置 spring.data.rest.detection-strategy=annotated 以避免默认暴露。

所有应用程序属性选项:

# Exposes all public repository interfaces but considers @(Repository)RestResource\u2019s `exported flag.
spring.data.rest.detection-strategy=default

# Exposes all repositories independently of type visibility and annotations.
spring.data.rest.detection-strategy=all

# Only repositories annotated with @(Repository)RestResource are exposed, unless their exported flag is set to false.
spring.data.rest.detection-strategy=annotated

# Only public repositories annotated are exposed.
spring.data.rest.detection-strategy=visibility

引用


答案 2

目前,没有针对您要查找的内容的全局切换。我已为您提交了此票证,以便包含在下一个主要版本中。

不确定它是否适合您,但除非显式注释,否则包私有存储库接口当前不会公开。如果您可以保护所有这些库存储库包,则可能优于显式注释。


推荐