當前位置:首頁 » 數據倉庫 » springbootjpa如何配置
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

springbootjpa如何配置

發布時間: 2023-07-14 22:34:19

⑴ SpringBoot入門-自動配置詳解

通過查看SpringBootApplication的源碼,會發現這是一個組合註解,其中最重要的註解是@EnableAutoConfiguration

先看@AutoConfigurationPackage這個註解

裡面導入了一個Registrar類,這個類實現了bean的掃描與注冊,那它掃描的是哪個包呢?

只要看PackageImports這個類,會發現如果沒有用@ComponentScan指定包名,他默認掃描的是啟動類的包名,比如你的啟動類是cn.hollycloud.App,它掃描的就是cn.hollycloud

再來看這個類,這個類用來載入所有的自動配置項

通過上面的源碼我們知道spring把所有配置項都導進來了,但我們並不需要所有的功能。比如說我開發的時候並不需要mongodb相關功能,但spring也會把相關配置項載入進來,怎麼關閉該功能呢?看下mongodb的自動配置源碼

重點是@ConditionalOnClass(MongoClient.class),這個的意思是只有類路徑中存在MongoClient.class,也就是我們導入mongo相關依賴,這個配置項才會開啟,否則不會注冊這個bean。

同時我們看下面有個MongoClient的bean,spring很貼心地為我們初始化好了mongo的客戶端,我們直接使用就行了,如果想自定義客戶端怎麼辦呢?也很簡單,直接自己初始化一個mongo客戶端放入spring容器就行了,@ConditionalOnMissingBean的意思是如果你沒有自定義客戶端它才會自己生成一個,是不是很方便,這個叫條件化註解

現在我們來實現一個簡單的自動配置類來鞏固下。

可以想像一下我們是一家機器人公司,專門製造高端機器人,很受客戶歡迎,但是配置機器人過於復雜,這點老是被客戶詬病,你的領導想讓你提供給客戶開機即用的產品,該如何實現呢?

首先我們創建一個機器人控制終端,這是控制終端可以操控機器人說話

接下來是自動配置項,可以自動注冊配置終端

我們想要給客戶一點自由,可以讓客戶自由配置機器人的名字和顏色,而不用管機器內部復雜的操作

接下來最重要的一步是把自動配置項放到類路徑的/META-INF/spring.factories裡面

然後客戶直接引用你提供的依賴就能直接控制機器人了,而不用管復雜的初始化操作

來控制機器人說話吧,直接注入robot就能使用了,不需要客戶關心復雜的初始化操作了

如果客戶想為機器人改個名字也很簡單,直接在application.yml配置下就行了

這個例子雖然很簡單,但是說明了自動配置的工作原理,spring內置的自動配置雖然復雜,但原理都一樣的。

參考代碼: https://gitee.com/huatin/java-test 下的AutoConfigTest模塊