多模塊工程應該這樣使用mybatisplus

多模塊工程應該這樣使用mybatisplus

​ 如果公司會經常創建項目,但是想將一些公共的功能抽取出來,封裝成jar放到私服。其他項目需要使用時直接去引用,這樣可以避免很多問題。例如:不寫重複業務邏輯,項目更新是只需要更新一套源碼,所有項目即可更新。員工看不到完整的源碼,包好源碼安全等等問題。經過大企業的員工都知道,很多大企業都是這樣搞的,但是這樣搞會比較耗費時間,但是可以理解的。

​ 如果在多個工程中實現這樣的功能,我們會面臨着在父工程中操作數據庫的業務吧,會遇到對象如何注入spring容器的問題吧。當你遇到這些問題的時候,一定要將問題解決在問題出處,千萬不要留給下面的開發人員。如果你把問題留下來,如果面對的開發人員是個新手該怎麼辦,這樣會讓新員工去看的你開發文檔,是一件不樂觀的事情。所以開發父工程的時候,關於配置的全部給默認值,下面的開發人員可以根據需求配置,不配置也沒問題,只有這樣纔會給開發人員減輕技術壓力。

​ 廢話不多說,直接上碼,咋們碼上說話。呵呵,那是不可能的,開會兩小時,擼碼五分鐘。

在這裏插入圖片描述

​ 在我們寫springboot應用是,都會在啓動類上打上 @SpringBootApplication這個註解。需要注意:這個註解只能掃描當前包及其子包,那麼我們寫的是一個父工程,明顯這個註解是掃描不到的,這就意味着程序中 @Service@Component這種註解就不能掃描到,對象就不能注入spring容器了。我們該怎麼辦呢?

​ 在 @SpringBootApplication註解上面的 @ComponentScan註解是幹嘛的,該註解標識的類, 會被 Spring 自動掃描並且裝入bean容器。他是可以直接指定包掃描的把,那麼我們是不是可以直接在啓動類上添加這個註解,指定父工程的包路徑呢?你指定的父工程是掃描到了,沒問題了。但是當前工程出問題了,自動配置失效了。你還需要指定當前工程的掃描包。這顯然不是一個好的解決方法,我們要求是不把問題留給後面的開發人員嘛。

在這裏插入圖片描述

​ 問題出現在哪裏,我們就在哪裏把問題解決,並要留給後面的人。

​ 既然面臨的問題是父工程掃描不到,那麼我們就在父工程中創建一個配置文件,在這個配置文件上使用 @ComponentScan註解指定包掃描。在這裏插入圖片描述這就就可以將該工程的@Service@Component這些註解表示的類注入spring容器了。這個配置文件是寫好了,spring怎麼加載呢?spring怎麼知道我們這個是配置文件,需要加載呢?在該工程的 resources/META-INF/spring.factories文件中指定配置文件,這樣配置文件纔會生效。

​ 另外還可以手動注入的方式,在配置文件上使用 @Configuration註解,手動將對象注入spring容器,如果對象很多,建議使用包掃描。當然了,我們採用這用方式手動注入,就沒有必要再需要注入的對象上寫@Service@Component這些註解了。

在這裏插入圖片描述

父工程中使用mybatisplus,其他的不在多說,直接參考mybatisplus-spring-boot的配置。這裏需要注意的是mapper接口,平時我們都直接在mapper接口上打 @Mapper註解,或者在配置文件上使用 @MapperScan掃描 mapper接口。但是很開心的告訴你,這裏使用 @Mapper註解是不行的,必須使用 @MapperScan掃描。這個註解直接在剛纔創建的配置文件上寫上就行,沒有必要再去創建一個配置文件了。

在這裏插入圖片描述

綜上所述,在父工程中用springboot結合MP一起使用時,需要注意兩天,1、對象注入spring容器的問題,2、mapper接口掃描的問題。對象注入spring容器可以選中手動注入,也可以自動注入。mapper接口只能使用 @MapperScan註解掃描mapper包,使用 @Mapper是沒有效果的。

在這裏插入圖片描述

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