# 工程结构

HOS基础平台提供的工程结构有多种方案,产品线可以根据自己的业务场景自由选择。

本文档中提到的hos仅作为业务示例,开发人员在创建相关目录或文件时可以修改成其它名称,比如hishrpoa等,请根据自己实际业务进行修改。

# 下载地址

工程结构地址:http://119.255.194.80/hos/demo/hos-app-demo
用户名/密码: hosuser/99ahivPJt
project-strcutre目录中是下面各个方案的示例工程,产品线请根据自己的业务场景自由选择

code-example目录中为示例代码,仅用于学习相关组件,其中代码涉及到许多组件,请根据实际的场景选择使用相关的代码,严禁直接基于示例代码直接开发相关产品

示例代码如下:

hos-app-demo
|   project-strcutre            
|   |   project-strcutre-1          单体版方案一
|   |   project-strcutre-2          单体版方案二
|   |   project-strcutre-3-1        单体版方案三的第一种方式
|   |   project-strcutre-3-2        单体版方案三的第二种方式
|   |   project-strcutre-4          单体版方案四
|   |   project-strcutre-5          微服务
|   code-example                    代码示例:包含快速开始、开发组件中的示例代码
|   |   hos-mediway-boot-demo       单体版代码示例
|   |   hos-mediway-cloud-demo      微服务版代码示例

# 方案一

将业务模块根据module分为四部分:

  • hos-business-common 中放置公用的annotation(自定义注解)、enums(枚举)、exception(自定义异常)等等
  • hos-model 中放置实体及VO相关的类,
  • hos-service 中放置的Mapper及service,
  • hos-web 中放置controller、启动类及上层的filter等内容
hos-mediway-boot                                               
|   hos-doc                                 项目的一些文档,如初始化SQL等
|   hos-business-parent                     业务模块根节点
|   |   hos-business-common                 带有业务性质的common
|   |   |   src/main/java
|   |   |   |   com.mediway.hos                     
|   |   |   |   |   annotation              自定义注解
|   |   |   |   |   config                  配置类
|   |   |   |   |   constant                常量类
|   |   |   |   |   enums                   公共枚举类,其他服务也可以使用
|   |   |   |   |   exception               业务模块自定义的异常类
|   |   |   |   |   utils                   业务模块自定义的util,除了系统提供的util
|   |   hos-model                           业务模块的model子模块
|   |   |   src/main/java
|   |   |   |   com.mediway.hos.            
|   |   |   |   |   contract                合同模块(示例)
|   |   |   |   |   |   model              
|   |   |   |   |   |   |   entity          实体,对应表,需要继承BaseEntity
|   |   |   |   |   |   |   vo              视图对象,用于展示层,封装某个指定页面(或组件)的所有数据
|   |   |   |   |   user                    用户模块(示例)
|   |   |   |   |   |   model               
|   |   |   |   |   |   |   entity          实体,对应表,需要继承BaseEntity
|   |   |   |   |   |   |   vo              视图对象,用于展示层,封装某个指定页面(或组件)的所有数据
|   |   hos-service                                 业务模块的service子模块
|   |   |   src/main/java
|   |   |   |   com.mediway.hos             
|   |   |   |   |   contract                合同模块(示例)
|   |   |   |   |   |   mapper              需要继承BaseMapper
|   |   |   |   |   |   service             需要继承BaseService
|   |   |   |   |   |   |   impl            需要继承BaseServiceImpl,实现service
|   |   |   |   |   user                    用户模块(示例)
|   |   |   |   |   |   mapper              需要继承BaseMapper                                    
|   |   |   |   |   |   service             需要继承BaseService                               
|   |   |   |   |   |   |   impl            需要继承BaseServiceImpl,实现service                 
|   |   |   src/main/resource                
|   |   |   |   contract                    
|   |   |   |   |   XXMapper.xml            
|   |   |   |   user                        
|   |   |   |   |   XXXMapper.xml 
|   |   hos-web                            业务模块的web子模块
|   |   |   src/main/java
|   |   |   |   com.mediway
|   |   |   |   |   HosApplication.java    启动类
|   |   |   |   |   hos
|   |   |   |   |   |   filter              业务模块自定义的filter
|   |   |   |   |   |   controller          控制层
|   |   |   |   |   |   |   contract        合同模块(示例)
|   |   |   |   |   |   |   user            用户模块(示例)
|   hos-generator                          代码生成器

工程结构方案一示例地址:
http://119.255.194.80/hos/demo/hos-app-demo下的project-strcutre/project-strcutre-1
用户名/密码: hosuser/99ahivPJt

# 方案二

在该方案中各个业务模块通过包名进行模块的区分,不再拆分成多个module,
将共用部分的内容都放在common包下面,如自定义注解、配置类、自定义filter等
将业务模块根据不同包名进行区分,如自定义异常类、mapper、实体类、service、controller等

hos-mediway-boot                                               
|   hos-doc                             项目的一些文档,如初始化SQL等
|   hos-business-parent                 业务模块根节点
|   |   com.mediway
|   |   |   hos
|   |   |   |   common                  放置公用的一些东西,如注解、配置等    
|   |   |   |   |   annotation          自定义注解
|   |   |   |   |   config              配置类
|   |   |   |   |   constant            常量类
|   |   |   |   |   enums               公共枚举类,其他服务也可以使用
|   |   |   |   |   filter              业务模块自定义的filter
|   |   |   |   |   utils               业务模块自定义的util,除了系统提供的util
|   |   |   |   contract                合同模块(示例)
|   |   |   |   |   exception           合同模块自定义的异常类
|   |   |   |   |   model              
|   |   |   |   |   |   entity          实体,对应表,需要继承BaseEntity
|   |   |   |   |   |   vo              视图对象,用于展示层,封装某个指定页面(或组件)的所有数据
|   |   |   |   |   mapper              需要继承BaseMapper
|   |   |   |   |   service             需要继承BaseService
|   |   |   |   |   |   impl            需要继承BaseServiceImpl,实现service
|   |   |   |   |   controller          控制层
|   |   |   |   user                    用户模块(示例)
|   |   |   |   |   exception           用户模块自定义的异常类
|   |   |   |   |   model               
|   |   |   |   |   |   entity          实体,对应表,需要继承BaseEntity
|   |   |   |   |   |   vo              视图对象,用于展示层,封装某个指定页面(或组件)的所有数据
|   |   |   |   |   mapper              需要继承BaseMapper
|   |   |   |   |   service             需要继承BaseService
|   |   |   |   |   |   impl            需要继承BaseServiceImpl,实现service   
|   |   |   |   |   controller          控制层
|   |   |   HosApplication.java         启动类
|   |   src/main/resource                
|   |   |   contract                    
|   |   |   |   XXMapper.xml            
|   |   |   user                        
|   |   |   |   XXXMapper.xml 
|   hos-generator                       代码生成器

工程结构方案二示例地址:
http://119.255.194.80/hos/demo/hos-app-demo下的project-strcutre/project-strcutre-2
用户名/密码: hosuser/99ahivPJt

# 方案三

在该方案中将工程按照业务模块进行划分多个module,每个业务模块中按照类的类型进行划分,
1、如果需要各个业务模块独立启动,在各个模块中加上自己的Application.java和配置文件;
2、如果需要各个业务模块做为一个服务启动,在各个模块的同级位置加一个runner模块,将各个模块中的配置项汇总在runner模块中的配置文件,在runner模块中加一个公共的Application.java启动类(必须整个系统中只能有一个启动类,需要将业务模块中启动类删除).

oa-mediway-boot                                               
|   oa-doc                              项目的一些文档,如初始化SQL等
|   oa-contract                         合同模块根节点
|   |   com.mediway
|   |   |   oa.contract
|   |   |   |   annotation              自定义注解
|   |   |   |   config                  配置类
|   |   |   |   constant                常量类
|   |   |   |   enums                   枚举类
|   |   |   |   filter                  业务模块自定义的filter
|   |   |   |   utils                   业务模块自定义的util,除了系统提供的util
|   |   |   |   exception               合同模块自定义的异常类
|   |   |   |   model               
|   |   |   |   |   entity              实体,对应表,需要继承BaseEntity
|   |   |   |   |   vo                  视图对象,用于展示层,封装某个指定页面(或组件)的所有数据
|   |   |   |   mapper                  需要继承BaseMapper
|   |   |   |   service                 需要继承BaseService
|   |   |   |   |   impl                需要继承BaseServiceImpl,实现service
|   |   |   |   controller              控制层
|   |   |   ContractApplication.java    启动类
|   |   src/main/resource                                      
|   |   |   XXMapper.xml                
|   oa-user                             用户模块根节点
|   |   com.mediway
|   |   |   oa.user
|   |   |   |   annotation              自定义注解
|   |   |   |   config                  配置类
|   |   |   |   constant                常量类
|   |   |   |   enums                   枚举类
|   |   |   |   filter                  业务模块自定义的filter
|   |   |   |   utils                   业务模块自定义的util,除了系统提供的util
|   |   |   |   exception               用户模块自定义的异常类
|   |   |   |   model               
|   |   |   |   |   entity              实体,对应表,需要继承BaseEntity
|   |   |   |   |   vo                  视图对象,用于展示层,封装某个指定页面(或组件)的所有数据
|   |   |   |   mapper                  需要继承BaseMapper
|   |   |   |   service                 需要继承BaseService
|   |   |   |   |   impl                需要继承BaseServiceImpl,实现service
|   |   |   |   controller              控制层
|   |   |   UserApplication.java        启动类
|   |   src/main/resource                                  
|   |   |   XXMapper.xml    
|   oa-runner                           统一启动时,放置启动类和 配置文件,单独启动时,不需要改模块     
|   hos-generator                       代码生成器

工程结构方案三示例地址:
http://119.255.194.80/hos/demo/hos-app-demo下的project-strcutre/project-strcutre-3
用户名/密码: hosuser/99ahivPJt

# 方案四

如果业务模块采用了多级结构的话,可以在前面几种方案的基础上通过多级package来区分不同的业务模块 示例如下:

    hos-model                      
    |   com.mediway.hos.            
    |   |   contract                    合同模块(示例)
    |   |   |   xx1                     子模块1
    |   |   |   |   model              
    |   |   |   |   |   entity          实体,对应表,需要继承BaseEntity
    |   |   |   |   |   vo              视图对象,用于展示层,封装某个指定页面(或组件)的所有数据
    |   |   |   xx2                     子模块2
    |   |   |   |   model              
    |   |   |   |   |   entity          实体,对应表,需要继承BaseEntity
    |   |   |   |   |   vo              视图对象,用于展示层,封装某个指定页面(或组件)的所有数据
    |   |   user                        用户模块(示例)
    |   |   |   xx3                     子模块3
    |   |   |   |   model              
    |   |   |   |   |   entity          实体,对应表,需要继承BaseEntity
    |   |   |   |   |   vo              视图对象,用于展示层,封装某个指定页面(或组件)的所有数据
    |   |   |   xx4                     子模块4
    |   |   |   |   model              
    |   |   |   |   |   entity          实体,对应表,需要继承BaseEntity
    |   |   |   |   |   vo              视图对象,用于展示层,封装某个指定页面(或组件)的所有数据

工程结构方案四示例地址:
http://119.255.194.80/hos/demo/hos-app-demo下的project-strcutre/project-strcutre-4
用户名/密码: hosuser/99ahivPJt