解決 SpringBoot + ktorm 多數據源時默認數據庫的指定

最近剛接觸到kotlin語言,並丟棄之前的mybatis使用全面支持kotlin的ktorm框架。框架使用 SpringBoot + ktorm ,但是多數據源時會導致無法指定默認數據庫。根據官網的說法默認數據庫就是最後一次創建的Database對象。

第一反應是使用 @Primary 註解,但是 @Primary 只在相同名稱的bean時候起作用。如果我們多數據源的 DataBase 的 bean 名稱一致確實是可以使用的,但是大多數情況下多數據源的 DataBase 對應 bean 名稱都是不同的。

接着就想到了使用 @order 註解,但是 @order 只是控制 Spring IOC 容器中 Bean 的執行順序的優先級,而不是定義Bean的加載順序,Bean的加載順序不受@Order或Ordered接口的影響。

經過一番複雜鬥爭,最後使用 @DependsOn 來解決指定默認數據源的問題。@DependsOn 的作用就是類的初始化依賴於指定的某個類,只有指定類初始化完成後纔會初始化。只要你想要指定的默認數據源晚於其他數據源初始化,就可以完成指定默認數據庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章