2
A
回答
3
Spring數據休息特別檢測並不導出存儲庫上的自定義實現。見the reference to the codebase here和the reason why here。
如果要公開自定義存儲庫實現,則需要使用自定義控制器。有關如何適當使用自定義控制器的文檔is slated for Spring Data Rest 2.4。
2
我們使用這兩種方法,並都做工精細至今:
- 實現自定義控制器來使用您的自定義服務層
- 實現自定義庫工廠(例如,從
RepositoryFactoryBeanSupport
延伸),建立自己的PersistentEntityInformation
併爲您的自定義數據存儲類型手動處理CRUD操作。
UPDATE:看這個章的文件:Adding custom behavior to all repositories。這個想法是用你自己的@EnableJpaRepositories(repositoryBaseClass = MyRepositoryImpl.class)
替換默認的存儲特定實現。
如果你想建立一個自定義存儲SPI這是一個不同的故事。您可以使用spring-data-keyvalue並實施您自己的KeyValueOperations
bean,您爲@EnableMapRepositories
指定的bean。作爲該實現的示例,查看spring-data-redis源。這是最簡單的解決方案。
從零開始爲自己的存儲庫構建一個完整的SPI需要更多的代碼。我們遵循spring-data-elasticsearch的資料。您可能需要實現:
- 元數據:
CustomEntityInformation
,CustomEntityMappingContext
,CustomPersistentEntity
,CustomPersistentProperty
。 - 集成:
@EnableCustomRepositories
,CustomRepositoriesRegistrar
,CustomRepositoryConfigurationExtension
,CustomRepositoryFactory
,CustomRepositoryFactoryBean
。 - 執行:
CustomRepository
(基本接口),CustomRepositoryImpl
(默認實現)。
對於spring-data-rest支持還需要一些額外的代碼,例如搜索資源不會自動公開,所以我們手動構建搜索資源。那麼你可能想要在頂部添加查詢支持等。
總結,答案是肯定的,可以通過實現自己的存儲SPI,但並不容易。首先應該尋找其他的解決方案,包括:
- 預測
- 資源處理器
- 定製控制器
- 其他spring data rest customization可能性
相關問題
- 1. spring-data both:自定義存儲庫和開箱即用的optionals
- 2. 使用Spring Data REST自定義端點
- 3. Spring Data REST自定義查詢集成
- 4. 定製實現存儲庫Spring-Data-Cassandra
- 5. Spring Data Solr多核心和存儲庫
- 6. REST API的自定義默認標題僅使用Spring Data REST
- 7. Spring Boot和Spring Data Rest
- 8. Spring MVC和Spring Data Rest
- 9. PropertyReferenceException在自定義存儲庫中
- 10. Spring Data REST存儲庫404不時彈出
- 11. Spring Data Rest修改存儲庫方法URI
- 12. 如何禁用Spring Data REST存儲庫的默認暴露?
- 13. Spring Data REST是否支持反應性crud存儲庫?
- 14. 直接在客戶端使用Spring-Data-Rest存儲庫?
- 15. Spring Data Rest多個存儲庫重複使用實體
- 16. 自定義Spring數據REST以僅公開存儲庫中選定的方法
- 17. Spring Data MongoDB試圖爲自定義存儲庫方法生成查詢
- 18. 如何控制自定義Spring Data Neo4j存儲庫方法的深度?
- 19. 如何在Spring-Data-JPA的自定義實現存儲庫中使用我的基本存儲庫方法?
- 20. 如何使用Spring數據REST公開自定義的DTO Crud存儲庫?
- 21. Spring Data JPA返回null存儲庫
- 22. 使用JavaConfig的Spring Data Solr存儲庫
- 23. Spring Data Neo4J存儲庫findAll()導致nullpointerexception
- 24. Spring Boot Data MongoDB - 存儲庫爲空
- 25. Symfony2存儲庫和自定義連接
- 26. 使用Spring Data Rest的控制器和存儲庫的相同URL映射
- 27. 如何暴露Spring Data Rest端點的自定義實現
- 28. 自定義由Spring Data REST生成的默認查詢
- 29. Spring Data Rest FetchType
- 30. Spring Cassandra TTL自定義存儲庫保存
你能否解釋或者鏈接到文檔這個好嗎?特別是第二個。 – afaulconbridge
添加說明和相關鏈接。 – aux
作爲一個方面說明,我們在一段時間前實現了這個解決方案,但現在看起來工作太多......))我們用spring-data-rest來實現某種通過REST從另一個微程序請求的「遠程資源」 - 但現在我們來到了更簡單的解決方案 - 使用API網關,投影和資源處理器來定製服務之間的鏈接。 – aux