美文网首页
Spring Cloud 零基础实战(四):最简单的多模块应用框

Spring Cloud 零基础实战(四):最简单的多模块应用框

作者: 檀布施 | 来源:发表于2019-05-27 22:24 被阅读0次

    1、说明

    1.1、关于多模块

    此处的多模块,指的就是多个微服务组成一个项目,每一个微服务就可以看成一个模块(module),其实每一个微服务模块本身就是一个项目,只不过 Maven 和 Eclipse 不同, Maven 是不支持多项目(Project)的,所以在 Maven 里可以通过父子多模块的方式来实现多模块的统一管理。

    1.2、关于 Demo 项目

    假设要开发一个考试系统,项目名称叫: edu ,项目下面包含多个提供微服务的子模块,数据库采用 MySQL 。

    1.3、本节目标

    只实现多项目的框架搭建,在演示框架里只搭建两个模块:用户模块、题库模块。注意:由于只是演示开发流程,所以不会过分纠缠于真实的业务逻辑。
    项目模块构成:
    edu --- 父项目
      microsvc --- 微服务项目集合
        user --- 用户模块(用户子项目)
        question --- 题库模块(题库子项目)
      other --- 其他模块或模块集合(此演示里仅仅用来占位)

    2、搭建父项目

    Maven搭建父项目,一般常用的有两种方法。
    1)建立一个空项目
    2)建立一个纯 pom 项目
    由于父项目主要是作为子模块的容器,并不需要太多的功能或配置,所以建议采用第一种模式:建立一个空项目。


    新建项目 - 选择空项目
    设置项目名称及项目路径

    项目名称 - edu
    项目目录:E:\springcloud\edu
    点击“Finish”完成空项目创建。

    3、创建pom集合模块

    创建两个pom集合模块,用来管理下级子项目。

    3.1、创建 microsvc

    注意利用主菜单里的 File -> New -> Module 菜单项来创建 1 级子模块


    通过主菜单 File -> New -> Module 建立 1 级子模块
    使用 SpringInitializr 创建子模块

    注:后面的子模块都是采用 SpringInitializr 来创建。


    新建模块 - microsvc
    配置模块名及路径
    修改 microsvc 模块里的 pom.xml 文件,增加一行,设定包类型为 pom,也就是只管理子模块的依赖关系,并没有代码部分。
    添加包类型:类型为 pom

    3.2、创建 other

    同上步骤,创建 other 模块,假设也是 pom 类型
    具体模块参数如下:


    other 子模块配置 1
    other 子模块配置 2
    other 子模块配置 3

    4、创建微服务模块

    微服务模块建立在 microsvc pom 模块下,所以,需要在 microsvc 子模块上点击右键菜单,进行子模块创建操作。


    在 microsvc 子模块下创建 微服务模块

    4.1、创建 user 微服务模块

    4.1.1、新建模块

    新建模块,同样是采用 Spring Initializr 模式,注意,采用 Maven Project 类型,里面会包含 java 代码。


    user 子模块参数

    暂时不加入依赖,到时可根据需要增加


    先不添加依赖
    user模块参数
    修改 user 模块的 pom.xml 文件,将默认生成的 parent 参数替换掉,将默认 parent 参数换成 microsvc 模块的信息。
    将 user 模块的 parent 换成 microsvc 模块的信息

    将 user 模块的父模块设置为 microsvc 的主要目的,就是利用 microsvc 来管理 user 及其它后续子模块的依赖关系。
    查看 user 模块和 microsvc模块的 pom 文件,可以看到依赖部分变成黄色的警示色,表示依赖重复了:


    重复的依赖
    请将 user 模块的 pox 文件里的 dependencies 部分整个删除,就OK了。说明已经从父项目 microsvc 里继承了依赖关系了。

    4.1.2、修改 user 模块的配置文件

    将 user 微服务服务端口设置为:8100

    4.1.3、修改 user 模块源码,支持 http 访问

    在 com.tanbushi.edu.microsvc.user 下新建包 controller,用来存放控制器的代码


    新建包

    新建包:controller


    新建 controller 包
    在controller 包里创建控制器类:UserController
    创建控制器类
    指定控制器类名

    在 UserController.java 文件里写入如下代码:

    package com.tanbushi.edu.microsvc.user.controller;
    
    /**
     * Created by Administrator on 2019/5/27.
     */
    @RestController
    public class UserController {
        @RequestMapping(value="/hello")
        public String hello(){
            return "hello from UserController";
        }
    }
    
    

    实际代码效果见下图:


    注解错误,缺少依赖

    缺少注解对应的依赖,需要补齐。
    鼠标点击 @RestController 上,会弹出红色警示灯,并点击倒三角号,出现操作提示,点击第一条即可增加依赖


    发现并添加依赖,并完成 import
    点击 @RequestMapping 出现下面提示
    注解错误, Alt+Enter 自动完 import

    从下图可以看到成功 import


    成功 import
    同时,检查 user 模块的 pom 文件,发现成功添加了 web 依赖,见下图
    user 模块增加了 web 依赖
    该依赖解决了 user 模块的 web 应用可以正常导入,但后续再新建的微服务模块还是需要导入 web 依赖,会比较麻烦。为了简化,可以将该依赖从 user 模块里删除,添加到 microsvc 的 pom 文件里,以后 microsvc 下的微服务模块就可以直接使用 web组件 了。修改后的 microsvc 的 pom 文件如下:
    微服务集合模块 microsvc 里添加 web 依赖,以供后续子模块继承

    4.1.4、运行 user 微服务

    运行 user 微服务

    出现下图界面,可以看到 8100 http 端口成功启动监听


    user 微服务启动 8100 端口

    4.1.5、浏览器访问测试

    在浏览器里输入:http://127.0.0.1:8100/hello

    image.png
    访问成功!

    4.2、创建 question 题库微服务模块

    基本方法和 user 模块类似,快速列举如下,不做赘述


    新建 question 微服务模块
    模块设置
    修改 parent
    设置题库微服务端口为 8200
    QuestionController.java 演示代码

    运行题库模块的启动函数 QuestionApplication 后,进行浏览器测试:


    题库微服务测试运行成功

    上一篇:Spring Cloud 零基础实战(三):注册中心 Eureka 的搭建
    下一篇:Spring Cloud 零基础实战(五):访问 MySQL 数据库
    所属文集:Spring Cloud 零基础实战


    相关文章

      网友评论

          本文标题:Spring Cloud 零基础实战(四):最简单的多模块应用框

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