記一次maven使用

背景

有一個銀行接口適配器,需要不同銀行實現(xiàn)對應接口


圖0 定義的適配器接口

當各自銀行實現(xiàn)了該適配器定義的接口,轉(zhuǎn)換器 就可以根據(jù) bankCode ,獲取對應的適配器實現(xiàn)類,最后調(diào)用其獲取交易信息的接口

開始

有兩種方案:

方案一

定義一個普通工程,普通工程里定義兩個maven子模塊,一個模塊中再添加子模塊(適配器的實現(xiàn)類),另一個模塊則是調(diào)用子模塊數(shù)據(jù)的轉(zhuǎn)換器

這種方法需要將適配器實現(xiàn)模塊打成jar,并上傳到maven,才能被轉(zhuǎn)換器依賴,不方便使用

方案二:
定義一個maven工程,同樣定義兩個子模塊,但由于是maven工程,因此他們之間可以直接進行依賴

接下來就主要講一下,怎么配置這個工程
注:轉(zhuǎn)換器是一個Spring-boot工程

創(chuàng)建maven工程

圖1 創(chuàng)建maven工程

圖2 創(chuàng)建maven工程
圖3 bank工程

創(chuàng)建maven子模塊

banks (適配器實現(xiàn)類模塊)

圖5 banks

exchange(轉(zhuǎn)換器)

同圖5


圖6 banks + exchange 工程結(jié)構(gòu)

刪掉沒用的 src 目錄

引入適配器jar

要引入的依賴就是 圖0 所定義的接口

圖7 引入適配器jar

在banks模塊下新建 icbc、bbc子模塊

圖8 新建icbc、bbc子模塊

刪掉banks下沒有使用的src目錄

分別在 icbd與bbc模塊實現(xiàn)adapter

圖9 實現(xiàn)adapter接口

將適配器實現(xiàn)類添加spring管理

圖10 加入Spring 管理

在適配器實現(xiàn)類上加入 @Component 注解

轉(zhuǎn)換器 獲取adapter的bean對象(Spring-boot工程)

新建Spring Context 工具類

圖11 SpringContextUtil

通過 SpringContextUtil 獲取Adapter類型的beans!

圖12 獲取Adapters相關(guān)的beans

新建controller,然后進行接口調(diào)用

圖13 調(diào)用結(jié)果

我們發(fā)現(xiàn),沒有任何返回數(shù)據(jù)

為什么?

猜想:是不是banks下的子模塊,并沒有被打入exchange模塊中,所以在exchange模塊中找不到適配器的實現(xiàn)類

答案的確就是這樣

接下來的目標就是將 banks下的模塊數(shù)據(jù)打入 exchange 中進行調(diào)用

配置pom,讓exchange模塊可以調(diào)用banks模塊的數(shù)據(jù)

方法一

exchange依賴banks下的各子模塊


圖14 依賴banks的子模塊
圖15 調(diào)用結(jié)果

現(xiàn)在,通過exchange已經(jīng)可以成功拿到各銀行適配器的信息了

通過bankCode調(diào)用適配器,從而獲取交易信息

圖16 調(diào)用交易信息的接口

調(diào)用結(jié)果

圖17 交易信息調(diào)用結(jié)果

優(yōu)化

雖然現(xiàn)在可以實現(xiàn)調(diào)用,但是,卻不是很方便
入圖 14 那樣,我新添加一個銀行的模塊,就得在exchange中添加一個引用,顯的很累贅
exchange 應該只 依賴一個總的banks的引用即可,這種依賴維護,應交由banks內(nèi)部去處理

banks 模塊新建一個子模塊

圖18 新建 bank-adapters

新建了一個 bank-adapters 模塊,其余子模塊的依賴在這里完成
exchange只需要依賴 bank-adapters即可


圖19 exchange通過bank-adapters依賴適配器的實現(xiàn)

這樣做,可以實現(xiàn)exchange對banks的解耦,維護起來會更方便

小提示

關(guān)于maven deploy
如果某個模塊不想被deploy到maven倉庫,可以通過pom進行配置

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.8.2</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>

pom之間有繼承關(guān)系,如果父被跳過,那么子也一樣
所以:只是想某個或某幾個子跳過,需一個一個配置,且父不能跳過才行

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981閱讀 16,208評論 2 11
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,641評論 1 32
  • maven是一款優(yōu)秀的服務構(gòu)建工具,基于約定優(yōu)于配置原則,提供標準的服務構(gòu)建流程。maven的優(yōu)點不僅限于服務構(gòu)建...
    zhipingChen閱讀 4,072評論 0 4
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,957評論 0 9
  • 渴望愛 卻又害怕愛 害怕媽媽靠近 害怕媽媽關(guān)心 忽遠忽近 忽冷忽熱 我愛她 愛的徹底 愛她 生我養(yǎng)我 為我遮風擋雨的她
    是一米七啊閱讀 129評論 0 0

友情鏈接更多精彩內(nèi)容