# 新建一个模块工程

经过前两章的学习,我们了解了HOS基础平台的微服务版的工程结构和运行环境,在本章节你将学习到如何创建一个新工程、如何开发简单的CRUD以及一些复杂操作。那么下面我们就开始正式学习项目从0到1的开发过程吧!

开发人员需要在HOS基础平台的后端微服务工程上新建模块,如果你手中没有HOS基础平台的后端相关代码,请从下载工程章节下载工程。后端工程代码中和本文档中提到的hos仅作为业务示例,开发人员在创建相关目录或文件时可以修改成其它名称,比如hishrpoa等,请根据自己实际业务进行修改。

在微服务版的工程结构中,我们使用最多的模块是hos-business-parent下的3个子模块:

  • hos-api 里面主要存放的是业务实体及供其它服务调用的feignClient
  • hos-service 里面主要存放的是业务controllerserviceserviceImplmappermapper.xml, 并且在配置文件中配置相关信息
  • hos-business-common 里面主要存放的是业务公共部分,如枚举、异常、常量等等

下面我们就开始进行第一步操作:子模块的新建

# 新建子模块(以用户模块为例)

1.新建用户服务,在hos-service上右击依次选择 New -> Module

create_project_1

2.在New Module界面选中左侧的Maven并且点击Next

create_project_2

3.选择Parenthos-service,给模块NameArtifactId命名,推荐他们两个命名保持一致,这里使用了hos-user-service(大家可以根据实际的业务模块命名)

create_project_3

4.点击Finish等待maven工程加载完毕

5.在hos-user-service工程内分别创建包com.mediway.hos.user.controllercom.mediway.hos.user.mappercom.mediway.hos.user.serviceresources/mapper,创建过程可参考单体版内容。

create_project_5

6.我们以同样的方式在hos-api下新建hos-user-api工程

create_project_6

7.在hos-user-api工程内分别创建包com.mediway.hos.user.feigncom.mediway.hos.user.model.entitycom.mediway.hos.user.model.vocom.mediway.hos.user.model.dto,创建过程可参考单体版内容。

create_project_6

# 工程版本依赖设置

1.打开hos-user-api工程下的pom.xml设置基本信息,加上红框内的信息

create_maven_1

2.打开hos-user-service工程下的pom.xml设置基本信息,加上红框内的信息

create_maven_2

以下依赖为刚刚新建的hos-user-api工程,代码组成主要是entityvodtofeign等模块

<dependency>
    <groupId>com.mediway.hos</groupId>
    <artifactId>hos-user-api</artifactId>
</dependency>

3.打开hos-business-parent工程下的pom.xmldependencyManagement标签下设置对hos-user-api的版本管理,加上红框内的信息

create_maven_3

<dependency>
    <groupId>com.mediway.hos</groupId>
    <artifactId>hos-user-api</artifactId>
    <version>${project.version}</version>
</dependency>

# 工程配置

1.拷贝示例hos-contract-service工程的ContractApplicationhos-user-service工程的com.mediway目录下,并且修改类名为UserApplication

create_config_1 create_config_1_2

点击OK,修改UserApplication中代码如下

create_config_1_3

2.拷贝hos-contract-service工程的配置文件至hos-user-service工程的resources

create_config_2

3.修改下bootstrap.yml里的spring.application.name 的值为hos-user-service

spring:
  application:
    name: hos-user-service

4.修改下bootstrap-dev.ymlserver.port的值为8003(可以定义为其他端口,但必须不冲突);可根据自己实际情况修改nacos的spring.cloud.nacos.configspring.cloud.nacos.discovery的值,示例中配置如下所示:

spring:
  cloud:
    nacos:
      config:
        file-extension: yml
        prefix: hos-user
        group: hos
        server-addr: ${ENV_NACOS_ADDERSS:192.16.18.196:10011}
        namespace: ${ENV_DIS_NAMESPACE:demo}
      discovery:
        group: hos
        server-addr: ${ENV_NACOS_ADDERSS:192.16.18.196:10011}
        namespace: ${ENV_DIS_NAMESPACE:demo}

server:
  port: 8003

5.我们先启动hos-user-service服务,访问 http://192.16.18.196:10011/nacos (url根据自己实际地址修改)查看效果

create_config_4

我们可以看到hos-user-service已经在注册列表中,说明一个新的微服务已经诞生!

6.修改nacos上的网关配置gateway.yml,添加users服务的路由配置

create_config_5

修改成如下配置

spring:
  cloud:
    gateway:
      enabled: true
      discovery:
        locator:
          enabled: true #开启从注册中心动态创建路由的功能,利用微服务名路由
          lower-case-service-id: true #将请求路径上的服务名配置为小写
      # 路由
      routes:
        # 路由标识(id:标识,具有唯一性)
        - id: hos-user-service
          # 目标服务地址(uri:地址,请求转发后的地址)
          uri: lb://hos-user-service
          # 路由条件(predicates:断言,匹配 HTTP 请求内容)
          predicates:
            ## 转发地址格式为 uri/archive
            - Path=/user/**
          filters:
            - StripPrefix=1

6.我们启动hos-managecenter模块下的managecenter-gateway服务,访问 http://192.16.18.196:10011/nacos 查看效果

create_config_6

我们可以发现网关服务也已经成功注册!