問題描述
最近啟動springboot項目的時候,發現有一條日志:Multiple Spring Data modules found, entering strict repository configuration mode!
,該日志雖然是INFO級別的,但強迫症看着實在是太難受了。所以花了一些時間去解決這個問題。這條日志的大概意思是,springboot發現了多個repository,為了代碼的健壯性,自動進入嚴格配置模式。啥意思呢,用過repository的同學都知道,使用repository后,可以通過類似findById
之類的簡單寫法,避開寫SQL等查詢,直接查詢數據庫。所以,當你有多種repository后,為了避免混亂,最好給不同的repository配置掃描路徑。避免把Mysql的repository讓redis給讀取了等錯誤情況。
解決辦法
- 如果你確實在使用多種repository,那么可以在main函數的啟動注解上,標明repository掃描路徑。比如:
@EnableMongoRepositories(basePackages = "***.mongo.dao")
、@EnableRedisRepositories(basePackages = "***.redis.dao")
等。 - 這種情況應該比較多,像我一樣,第一次聽說redis還有repository的……都是直接通過
RedisTemplate
直接操作的。所以直接去掉redis的repository類即可。在main函數上修改springboot注解,exclude相關類。代碼:@SpringBootApplication(exclude = { RedisRepositoriesAutoConfiguration.class})
。如下圖所示:
當然,你重復的repository類可能和我不一樣,可以自己查看一下。首先在IntelliJ中雙擊shift鍵,搜索RepositoryFactorySupport
類,然后打開它。點擊類名左側的箭頭,看看有哪些實現類,這些實現類就是一個一個的repository,排除掉即可。操作截圖如下:
點擊箭頭,查找實現類:
根據這個結果,把你不用的exclude排除掉即可!
版權聲明:《springboot啟動日志:Multiple Spring Data modules found, entering strict repository configuration mode》為CoderBBB作者「ʘᴗʘ」的原創文章,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://www.coderbbb.com/articles/26