Dubbox入门之环境搭建

创建parent项目

parent项目就是一个父类项目,他存在的意义就是管理其所有子项目的pom依赖。

1.新建

这里需要注意:上面我们已经提到了parent项目存在的意义就是管理子项目的pom依赖,所以这里不需要勾选Create from archetype,即我们不需要在parent父类项目中写代码。
然后我们继续next

我们将父类项目名设置为dubbboxdemo-parent

2.修改
我们将创建好的父类项目的src包删除,因为这个父类项目只需要管理pom依赖即可,不需要写代码。
那么我们的parent父类项目就完成了创建。
最终项目结构

创建pojo模块

pojo项目顾名思义就是存放Java实体类的项目,对于分布式项目而言,很多模块都可能需要调用同一个pojo类,所以我们将pojo类单独提取出来供其他模块项目调用访问。

1.新建

右键点击我们的父类项目dubboxdemo-parent选择new Module新建一个模块。这里我们需要使用模板,选择maven-archetype-webapp


新的项目名称我们设置为dubboxdemo-pojo,并且IDEA帮我们自动关联了父类项目dubboxdemo-parent

介绍

如上图所示为我们创建第一个子项目debboxdemo-pojo后的完整项目结构。

观察两者pom文件的变化

  1. debboxdemo-pojo子项目的pom文件中可以发现存在一个<parent>节点,就是表明此子项目依赖于父项目dubboxdemo-parent。并注意:此处的debboxdemo-pojo的打包方式是jar
  2. dubboxdemo-parent父项目中我们发现多了一个<modules><modele>节点,其就标明了这个dubboxdemo-pojo模块是自己的子项目。并注意:此处的dubboxdemo-parent的打包方式为pom

packing打包篇

maven常见的打包方式是:pom、jar、war。对于IDEA而言,新建的项目默认的打包方式是war。但是如果不写<packaging>节点,maven默认将项目打包成jar包。

我们需要的就是告诉maven,我这个项目是什么类型的。如果你设置为jar或者不添加<packaging>节点,maven就会帮你把项目打包为一个jar文件;如果你设置为war,maven就会将你的项目打包成一个war文件;如果你设置为pom,maven不会生成任何东西。

注意以下规则:

  • jar: 是maven的默认打包类型,一般此模块中的代码是需要被其他各个模块共用的,并也不是父类模块,就用这中打包方式,可添加可不添加。
  • war: 如果你的这个项目模块是web项目,即是需要用来运行在Tomcat服务器上的,就将此项目打包成这种类型。
  • pom: 如果这个项目是父类项目,即如我们的案例中所有的子项目的最上层都是一个parent项目,这个项目不用来写程序,仅仅用来管理jar包,所以需要打包成pom类型。

创建interface模块

仍和上面创建pojo项目的步骤类似,我们创建的dubboxdemo-interface接口模块需要使用maven的模板,选择maven-archetype-webapp选项。

dubboxdemo-interface接口模块,顾名思义就是用来定义接口的,在以前已经提到了,模块化的项目中,各个部分都应该定义在不同的模块中,目的就是提高重用率。

如上所示,新创建的dubboxdemo-interface接口模块打包类型应该设为jar

创建service模块

上面我们已经创建了dubboxdemo-interface接口模块,下面我们当然要创建对应的实现类模块dubboxdemo-service

和创建interface模块步骤是相同的,我们在项目中创建dubboxdemo-service模块。这里需要注意的是service实现类模块打包类型是war类型。

创建dao模块

创建了service层模块了,下面就需要创建dao层模块了,即dao层模块是用来和数据库打交道的,用来持久化数据等。

我们创建dubboxdemo-dao模块,并注意这里的打包方式应该设置为jar类型。

创建web模块

创建了service层模块、创建了dao层模块。下面当然是创建web层模块了。

我们创建dubboxdemo-web模块。并注意这里的打包方式是war类型。

总览

到现在为止,我们已经创建了常见的分布式模块了,当然实际项目中,你还可能创建其他模块项目,比如common模块等,可以将通用的程序抽取出来,提高重用率。

如上是整体项目结构。其中dao interface pojo三个模块都是打包成jar类型、service web两层是需要打包成war类型。

配置项目

上面我们已经完成了基本的项目创建,回过头来想想:我们本次创建的是一个基于dubbox的分布式项目,项目首先需要启动Service模块,向zookeeper注册远程服务地址;然后启动Web模块,并中服务地址列表中随机选取一个分配给Web端调用。

那么我们需要配置各个模块之间的关系,不然就无法实现各个模块之间的关联,也就无法实现调用。

图解各模块间关系

如上,其实就是我们常见的三层架构,而在这里的区别之处就是各层都使用模块隔离出来了。我们需要知道的就是怎样在IDEA上建立这些模块之间的联系关系。

配置

web模块

注意 各个模块都是打开这个Open Module settings,下面我不在截图。

之后建立模块间的依赖。

如上,点击+,选择Module Dependency 添加模块依赖。但是这里呢,因为我们还没有写代码,可能不知道应该怎样建立依赖,注意,这里的依赖设置和前面说的三层架构之间的调用有区别,这里建立的依赖相当于Jar的依赖关系,即我们需要使用另一个模块之间的接口、方法对象…的时候就添加对应的模块的依赖。比如,通常而言,我们会在web层调用service层,而需要这时需要依赖interface模块,而我们还需要调用pojo进行装配Bean,那么还需要依赖pojo模块。

除了上面的依赖配置还不行的,我们还需要手动在pom中建立依赖关系,注意,这里就是传说的三层架构设计了。

groupId以及artifactId使我们之前建立父模块parent已经设置好的。如上,我们只需要配置一个依赖关系即可,也就是web-service-dao的设计。这个配置与上面的模块配置是不同的,而且如果你重复配置了pom中的依赖关系,运行项目的时候是肯定会报错的,这个与eclipse是不同的。

interface模块

interface中,这里我们可能会用到pojo对象,所以建立与pojo的依赖关系。

service模块

service模块即是interface模块的实现类,他既需要继承interface,又需要调用dao,所以我们给service配置与这两者之间的关系。

dao和pojo模块

pojo模块不需要和依赖其他模块,所以无需配置。

dao模块,在这里可能需要pojo模块,所以建立与pojo模块间的依赖关系,这里我不在贴图。

到此为止我们基本算是配置好了各个模块间的依赖关系,需要注意的就是,在Module setting中,我们需要使用哪个模块中的方法,我们就配置依赖哪个模块,而在pom文件中我们需要遵循三层架构的调用关系即可。

当然,如果我们没有配置对应的模块依赖,我们也可以根据idea报错自动添加对应的依赖,但是注意盲目的根据idea的报错任其生成自动生成配置,可能会产生依赖重复注入的问题,总之,配置依赖前先考虑各个模块间的关系。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值