Spring Data 儲存庫:揭開實現之謎
在使用Spring Data JPA 儲存庫時,您可能想知道它們的內部工作原理。本文將揭示運行時存儲庫實現的有趣過程。
如何建立儲存庫類別和注入方法?
與常見假設相反,沒有程式碼涉及產生或字節碼操作。相反,Spring Data 動態產生一個 JDK 代理實例,充當儲存庫介面的支援類別。此代理會攔截所有方法呼叫並將它們重新導向到適當的位置:
此路由由 QueryExecutorMethodInterceptor 處理,它充當代理的方法調度程序。
工廠模式和 DI 整合
儲存庫代理實例的建立遵循工廠模式,高階代理建立發生在 RepositoryFactorySupport 中。特定於商店的實現提供了必要的組件,以簡化與 Spring 等框架的整合。
在Spring 中,您可以使用以下程式碼來建立儲存庫:
EntityManager em = ...; JpaRepositoryFactory factory = new JpaRepositoryFactory(em); UserRepository repository = factory.getRepository(UserRepository.class);
這個基於工廠的方法強調Spring Data 可以獨立於Spring 容器運行,只要它的庫位於類路徑上。然而,為了無縫集成,Spring Data 提供了 Java 配置、XML 命名空間和 CDI 擴充支援。
以上是Spring Data在運行時如何產生並實作儲存庫類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!