# 工程结构
HOS基础平台提供的工程结构有多种方案,产品线可以根据自己的业务场景自由选择。
本文档中提到的hos
仅作为业务示例,开发人员在创建相关目录或文件时可以修改成其它名称,比如his
、hrp
、oa
等,请根据自己实际业务进行修改。
# 下载地址
工程结构地址: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