springboot啟動日志:Multiple Spring Data modules found, entering strict repository configuration mode


問題描述

最近啟動springboot項目的時候,發現有一條日志:Multiple Spring Data modules found, entering strict repository configuration mode!,該日志雖然是INFO級別的,但強迫症看着實在是太難受了。所以花了一些時間去解決這個問題。這條日志的大概意思是,springboot發現了多個repository,為了代碼的健壯性,自動進入嚴格配置模式。啥意思呢,用過repository的同學都知道,使用repository后,可以通過類似findById之類的簡單寫法,避開寫SQL等查詢,直接查詢數據庫。所以,當你有多種repository后,為了避免混亂,最好給不同的repository配置掃描路徑。避免把Mysql的repository讓redis給讀取了等錯誤情況。

解決辦法

  1. 如果你確實在使用多種repository,那么可以在main函數的啟動注解上,標明repository掃描路徑。比如:@EnableMongoRepositories(basePackages = "***.mongo.dao")@EnableRedisRepositories(basePackages = "***.redis.dao")等。
  2. 這種情況應該比較多,像我一樣,第一次聽說redis還有repository的……都是直接通過RedisTemplate直接操作的。所以直接去掉redis的repository類即可。在main函數上修改springboot注解,exclude相關類。代碼:@SpringBootApplication(exclude = { RedisRepositoriesAutoConfiguration.class})。如下圖所示:

a536fef7502c417bb8300e9259006355.jpg

當然,你重復的repository類可能和我不一樣,可以自己查看一下。首先在IntelliJ中雙擊shift鍵,搜索RepositoryFactorySupport類,然后打開它。點擊類名左側的箭頭,看看有哪些實現類,這些實現類就是一個一個的repository,排除掉即可。操作截圖如下:

0235070e455e4a90bec3cedffed0f37b.jpg

點擊箭頭,查找實現類:

546bf19736d94065997b75bdad5a4073.jpg

根據這個結果,把你不用的exclude排除掉即可!

版權聲明:《springboot啟動日志:Multiple Spring Data modules found, entering strict repository configuration mode》為CoderBBB作者「ʘᴗʘ」的原創文章,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://www.coderbbb.com/articles/26


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM