美文网首页java学习springbootSpringBootspringboot
第二十二章:SpringBoot项目多模块运用与设计

第二十二章:SpringBoot项目多模块运用与设计

作者: 恒宇少年 | 来源:发表于2017-05-04 23:05 被阅读14405次

    在企业级的项目开发中,系统过于庞大时对应的开发人员的数量也会陆续的增加,正因为如此也会给开发人员业务逻辑之间对接增加一些不必要的困难,如果是开发人员过多时,项目提交代码以及逻辑交互起来依然会出现很多问题,并且如果多个项目公用同一个功能那么分离起来也比较麻烦。针对这个情况我们可以采用多种的形式来处理,如:功能模块单独项目开发,功能模块分组,Maven项目Module形式。我们接下来就详细的讲解下有关Maven的Module的模式。

    本章目标

    基于SpringBoot项目设计Maven管理的多模块项目,并且便宜模块对应生成Jar文件用于系统。

    构建项目

    我们采用IntelliJ IDEA工具来创建一个Maven项目,项目的pom.xml要添加对应SpringBoot的配置,因为Maven多模块项目内的模块并不能独立的存在,必须有一个介质来包含,项目结构如下图1所示:

    图1

    可以看到我们创建的Maven项目结构如上图1所示,pom.xml内我们对应的添加了对SpringBoot的支持,因为我们需要使用SpringBoot来作为项目基本框架,并在pom.xml配置文件引入了Web模块的支持,所以介质项目内的Module都会用于Web依赖。

    我们在介质Maven项目内创建三个Module,分别为:bean(所有实体类Module)、user(用户逻辑Module)、pager(页面Module)。

    创建实体Module(bean)

    创建Module的方式与创建项目有点出入,我们点击项目名称后右键->New->Module->Maven,界面如下图2所示:

    图2

    我在ArtifactId栏目填写了bean,证明这个项目是Chapter22组内的一个子项目,点击Next后创建Module即可,Module创建完成后的展现形式如下图3所示:

    图3

    我们可以看到之前创建的介质Maven项目还存在src目录,这个我们删掉就可以了,对于我们本章项目来说没有存在的意义。可以看到我们创建的模块的pom.xml配置文件内对应添加了parent节点项目是我们的介质项目,这也是Maven模块项目的好处,我们可以把共同引入的内容在介质项目的pom.xml配置文件内都引入,那么子项目也就会有相对应的依赖。下面我们在bean模块项目内添加一个用户的实体,如下图4所示:

    图4

    我们的实体创建完成后,bean项目就可以先放一放。

    创建用户Module(user)

    接下来我们再来编写user项目模块,流程还是一样,我们来创建一个user的Module,项目结构如下图5所示:

    图5

    我们user模块项目内需要使用bean模块项目内创建的用户实体,我们就可以在user模块项目内的pom.xml配置文件内添加对应的引入,如下图6所示:

    图6

    下面我们来测试user模块项目添加了依赖后是否可以使用UserBean实体,我们在user模块项目内添加一个UserController并添加一些逻辑处理,如下图7所示:

    图7

    上图7内我们添加了一个index方法,当我们在浏览器访问/user/index地址时并且将传入的UserBean内的name属性值传入到user_index.jsp页面内,既然UserBean可以在user模块项目中使用,也就证明了我们的引入是没有问题的。

    创建页面模块(pager)

    我们在user模块内配置了跳转user_index.jsp页面,所以我们需要对应添加一个专门存放页面的模块,创建web模块项目需要注意我们不选择Maven项目创建,而是选择SpringBoot项目类型创建,如下图8所示:

    图8

    创建完成后项目结构如下图9所示:

    图9

    可以看到我们创建pager模块的maven配置文件pom.xml内对应parent节点的内容并不是我们chapter22项目,并且我们chapter22配置文件对应的内容都已经配置,这里不用重复引用,所以我们这里需要手动修改下,改动后内容如下图10所示:

    图10

    我们pager模块项目只需要引入user模块项目即可,如果你需要bean模块项目引入也一并添加dependency节点配置即可。

    创建JSP文件

    在创建user_index.jsp之前我们需要在application.properties配置文件内添加对应的路径配置,如下图11所示:

    图11

    根据上面的配置所示我们创建的user_index.jsp的所处位置为:/webapp/WEB-INF/jsp/user_index.jsp,创建user_index.jsp文件内容如下图12所示:

    图12

    到目前为止我们的项目代码已经编写完成,下面我们来使用外部Tomcat的形式运行SpringBoot项目,我们需要添加项目对本地Tomcat服务器的支持。

    配置本地Tomcat服务器

    点击Run->Edit Configurations->"+"->Tomcat Server->Local,界面如下图13所示:

    图13

    下面我们需要配置本地Tomcat的目录为止,如下图14所示:

    图14

    目录配置完成后,需要将pager项目添加到Tomcat内,如下图15所示:

    图14

    配置完成后点击Apply即可完成本地tomcat的配置,直接运行Tomcat就可以了。

    运行测试

    工具右上角选择tomcat8服务器,点击运行按钮后查看控制台输出的日志,如果没有异常恭喜你已经成功的启动了多模块项目,我们打开浏览器输入网址:http://127.0.0.1:8080/user/index?name=admin,界面输出内容如下图15所示:

    图15

    可以看到我们成功的输出了内容,看着比较简单的一句话的输出,我们使用了三个项目模块来完成,正因为如此我们的模块化项目才能最大化的被引用并且使用。

    总结

    以上内容就是本章的全部讲解内容,本章主要讲解了SpringBoot项目架构下我们如何配置Maven多模块项目并且部署运行测试,下一章我会讲解我们如果打包运行War项目文件。

    本章代码已经上传到码云,

    SpringBoot配套源码地址:https://gitee.com/hengboy/spring-boot-chapter

    SpringCloud配套源码地址:https://gitee.com/hengboy/spring-cloud-chapter

    SpringBoot相关系列文章请访问:目录:SpringBoot学习目录

    QueryDSL相关系列文章请访问:QueryDSL通用查询框架学习目录

    SpringDataJPA相关系列文章请访问:目录:SpringDataJPA学习目录

    SpringBoot相关文章请访问:目录:SpringBoot学习目录,感谢阅读!

    欢迎加入QQ技术交流群,共同进步。

    QQ技术交流群

    相关文章

      网友评论

      • 萌新码农:我把你的项目导到idea里,还是报404,就是改了一个springboot starter版本
        恒宇少年:@萌新码农 新版本的已经变更了package
        萌新码农:@恒宇少年 就是因为版本的问题,SpringBootServletInitializer这个类不同版本导的包不一样,所以会报404
        恒宇少年:不该版本试试
      • 005846b28e0a:刚开始也是报404,后来把三个模块的包 结构改成一致的了,就可以正常访问了,原来是扫描路径的问题
        恒宇少年:@This_Wei 对
      • 7ef834625ca1:为什么我按步骤操作同样也是报404错误???
        7ef834625ca1:@恒宇少年 好的
        恒宇少年:@Fengzhi志 1.检查你的扫描位置,2.检查你的页面配置,3.检查你的依赖
      • 5ad8582eba93:1,记得添加这个类ServletInitializer,要不然会404。
        2,PagerApplication 这个类的所在包位置要注意,如果你的service等组件不在PagerApplication 这个类的包名下会扫描不到导致注入失败。
      • 冥灬:应该先弄一个空文件夹比较
      • 5b8d529a0af1:特意注册帐号来评论,博主写的很明白易懂,邦邦达
        恒宇少年:@wuswncsu 谢谢,非常感谢,希望继续关注,会陆续更新企业项目用到的核心技术
      • e740db07a57c:楼主Spring Boot项目应该有yml配置文件的吧
        恒宇少年:@sueXin 进群艾特我,我告诉你,这个打字比较麻烦
        e740db07a57c:@恒宇少年 这个一般我我们构建一个springboot项目的时候都会生成一个配置文件 就是配置一些数据源什么的 但是maven的多模块的配置我就不知道配置在那里了,在网上也看了很多demo,但是都没有说明这一点 难道不需要数据源就能运行吗 :flushed:
        恒宇少年:@sueXin ?
      • 美元_cb70:你好,我用相同的方法搭建的访问404
        恒宇少年:@丨个猪头个三 SpringBoot项目不用添加web.xml你检查检查哪里有问题,可以下载源码看看,文章下面有地址
        1a1f17196705:问题解决了嘛?按照楼主的代码,就是404
        ef34426a1d98:我也刚弄完 然后是404,不知如何解决。而且在配置tomcat,添加war时,需要配置web.xml,再对Project Structure 中配置Artifacts才会出现war文件,但是启动时404;创建的pager是空的springboot项目。不明白是哪里出现了错误
      • f0eb4652b966:这个地方数据库的配置链接放在哪个工程
        恒宇少年:@Sweet丶Boy 是的
        f0eb4652b966:@恒宇少年 那dao要依赖web工程吗
        恒宇少年:@Sweet丶Boy 一般放在web
      • 小小机器人:楼主这种大神,我真是崇拜得不行
        恒宇少年:@小小机器人 可别这么说,我也是一个小学生,大家一起分享知识,共同进步
      • summer_abc:不知楼主什么时候能发一篇多模块, jar包发布的教程?
        另外, 我有几个问题想请教一下,
        1. 父模块可以@Autowired子模块中的对象吗?(例如: web模块的Controller, 注入service模块中的Service对象)
        2. 不同的子模块可以连接不同的数据库吗?(例如: 用户的数据和log的数据分别存到两个数据库中)
        3. 配置文件只能由一个吗? 如果可以有多个, 生成jar包时其选择规则又是什么?
        summer_abc: @梦袋熊先生 方便发给链接吗?或者邮箱给我。xianforwork@163.com
        谢谢
        梦袋熊先生:正好我有篇文章写的就是你想要的这个需求.....
        恒宇少年:@lixian13149999 注入是跟模块没有关系的,要看最终发布的项目的扫描目录。如果存在不用子模块调用不同的数据库也是可以做的,可以根据切面自动切换数据源访问不同数据库。

      本文标题:第二十二章:SpringBoot项目多模块运用与设计

      本文链接:https://www.haomeiwen.com/subject/prcltxtx.html