记一次maven使用

背景

有一个银行接口适配器,需要不同银行实现对应接口


图0 定义的适配器接口

当各自银行实现了该适配器定义的接口,转换器 就可以根据 bankCode ,获取对应的适配器实现类,最后调用其获取交易信息的接口

开始

有两种方案:

方案一

定义一个普通工程,普通工程里定义两个maven子模块,一个模块中再添加子模块(适配器的实现类),另一个模块则是调用子模块数据的转换器

这种方法需要将适配器实现模块打成jar,并上传到maven,才能被转换器依赖,不方便使用

方案二:
定义一个maven工程,同样定义两个子模块,但由于是maven工程,因此他们之间可以直接进行依赖

接下来就主要讲一下,怎么配置这个工程
注:转换器是一个Spring-boot工程

创建maven工程

图1 创建maven工程

图2 创建maven工程
图3 bank工程

创建maven子模块

banks (适配器实现类模块)

图5 banks

exchange(转换器)

同图5


图6 banks + exchange 工程结构

删掉没用的 src 目录

引入适配器jar

要引入的依赖就是 图0 所定义的接口

图7 引入适配器jar

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

图8 新建icbc、bbc子模块

删掉banks下没有使用的src目录

分别在 icbd与bbc模块实现adapter

图9 实现adapter接口

将适配器实现类添加spring管理

图10 加入Spring 管理

在适配器实现类上加入 @Component 注解

转换器 获取adapter的bean对象(Spring-boot工程)

新建Spring Context 工具类

图11 SpringContextUtil

通过 SpringContextUtil 获取Adapter类型的beans!

图12 获取Adapters相关的beans

新建controller,然后进行接口调用

图13 调用结果

我们发现,没有任何返回数据

为什么?

猜想:是不是banks下的子模块,并没有被打入exchange模块中,所以在exchange模块中找不到适配器的实现类

答案的确就是这样

接下来的目标就是将 banks下的模块数据打入 exchange 中进行调用

配置pom,让exchange模块可以调用banks模块的数据

方法一

exchange依赖banks下的各子模块


图14 依赖banks的子模块
图15 调用结果

现在,通过exchange已经可以成功拿到各银行适配器的信息了

通过bankCode调用适配器,从而获取交易信息

图16 调用交易信息的接口

调用结果

图17 交易信息调用结果

优化

虽然现在可以实现调用,但是,却不是很方便
入图 14 那样,我新添加一个银行的模块,就得在exchange中添加一个引用,显的很累赘
exchange 应该只 依赖一个总的banks的引用即可,这种依赖维护,应交由banks内部去处理

banks 模块新建一个子模块

图18 新建 bank-adapters

新建了一个 bank-adapters 模块,其余子模块的依赖在这里完成
exchange只需要依赖 bank-adapters即可


图19 exchange通过bank-adapters依赖适配器的实现

这样做,可以实现exchange对banks的解耦,维护起来会更方便

小提示

关于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之间有继承关系,如果父被跳过,那么子也一样
所以:只是想某个或某几个子跳过,需一个一个配置,且父不能跳过才行

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容

  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981阅读 15,925评论 2 11
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,105评论 1 32
  • maven是一款优秀的服务构建工具,基于约定优于配置原则,提供标准的服务构建流程。maven的优点不仅限于服务构建...
    zhipingChen阅读 3,940评论 0 4
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,323评论 0 9
  • 渴望爱 却又害怕爱 害怕妈妈靠近 害怕妈妈关心 忽远忽近 忽冷忽热 我爱她 爱的彻底 爱她 生我养我 为我遮风挡雨的她
    是一米七啊阅读 110评论 0 0