出於性能的考慮,我從組件掃描切換到明確聲明我的豆子。所以基本上我想刪除@EnableJpaRepositories
,因爲它掃描存儲庫。如何設置春天JPA的數據存儲庫,沒有成分掃描
我的資料庫是擴展JpaRepository
標準接口。我如何聲明我的倉庫?
出於性能的考慮,我從組件掃描切換到明確聲明我的豆子。所以基本上我想刪除@EnableJpaRepositories
,因爲它掃描存儲庫。如何設置春天JPA的數據存儲庫,沒有成分掃描
我的資料庫是擴展JpaRepository
標準接口。我如何聲明我的倉庫?
您可以通過手動聲明JpaRepositoryFactoryBean
創建單獨的庫實例:
@Configuration
class Config {
@Bean
public JpaRepositoryFactoryBean userRepository() {
JpaRepositoryFactoryBean factory = new JpaRepositoryFactoryBean();
factory.setRepositoryInterface(UserRepository.class);
return factory;
}
}
這將導致春季打電話getObject()
獲得從工廠倉庫代理並有可能將其注入客戶。
但是,我要說的卻是 - 如果沒有配置公然錯 - 掃描爲庫的開銷是忽略不計,ESP。與初始化EntityManagerFactory
所花費的時間相比。
如果你只想要配置一個具體的存儲庫豆你可以直接使用工廠來這樣創建:
感謝奧利弗! –
組件掃描可以在某些雲計算運行時間(即谷歌應用程序引擎),其中應用實例需要一些iddle時間後,「熱身」(基本上完全重新部署)性能疼痛。您的解決方案可能比您期望的更有用,謝謝! –
@Oliver基爾克這一切都是好的,但有一個小問題。由於我的應用程序是多租戶的,我不能像上面那樣創建JpaRepositoryFactoryBean。有沒有辦法讓它懶惰地創建?還有JpaRepositoryFactoryBean附帶userRepository,如何爲此創建多個工廠bean? –