首先说在前面的是:这东西并没有一套通用的标准,不同公司或者团队的使用习惯和规范也不尽相同。

我们就以当下非常火热的Spring Boot典型项目结构为例,创建出来的项目应该总体分为三大层:
批注 20200519 114606.jpg

  • 项目根目录/src/main/java:放置项目Java源代码
  • 项目根目录/src/main/resources:放置项目静态资源和配置文件
  • 项目根目录/src/test/java:放置项目测试用例代码

而位于/src/main/java目录下的Java源代码的组织结构大家比较关心,这地方也只能给出一个通常典型的结构,毕竟不同项目和团队实践不一样,稍许有区别,但整体安排应该差不多。而且如果是多模块的项目的话,下面的结构应该只对应其中一个模块,其他模块的代码组织也大致差不多。

批注 20200519 114738.jpg

各个目录详细介绍:

|_annotation:放置项目自定义注解
|_aspect:放置切面代码
|_config:放置配置类
|_constant:放置常量、枚举等定义
   |__consist:存放常量定义
   |__enums:存放枚举定义
|_controller:放置控制器代码
|_filter:放置一些过滤、拦截相关的代码
|_mapper:放置数据访问层代码接口
|_model:放置数据模型代码
   |__entity:放置数据库实体对象定义
   |__dto:存放数据传输对象定义
   |__vo:存放显示层对象定义
|_service:放置具体的业务逻辑代码(接口和实现分离)
   |__intf:存放业务逻辑接口定义
   |__impl:存放业务逻辑实际实现
|_utils:放置工具类和辅助代码

然后接下来/src/main/resources目录,里面主要存放静态配置文件和页面静态资源等东西:

|_mapper:存放mybatis的XML映射文件(如果是mybatis项目)
|_static:存放网页静态资源,比如下面的js/css/img
   |__js:
   |__css:
   |__img:
   |__font:
   |__等等
|_template:存放网页模板,比如thymeleaf/freemarker模板等
   |__header
   |__sidebar
   |__bottom
   |__XXX.html等等
|_application.yml       基本配置文件
|_application-dev.yml   开发环境配置文件
|_application-test.yml  测试环境配置文件
|_application-prod.yml  生产环境配置文件

一些注意事项

1、Contorller层参数传递建议不要使用HashMap,建议使用数据模型定义

2、Controller层里可以做参数校验、异常抛出等操作,但建议不要放太多业务逻辑,业务逻辑尽量放到Service层代码中去做

3、Service层做实际业务逻辑,可以按照功能模块做好定义和区分,相互可以调用

4、功能模块Service之间引用时,建议不要渗透到DAO层(或者mapper层),基于Service层进行调用和复用比较合理

5、业务逻辑层Service和数据库DAO层的操作对象不要混用。Controller层的数据对象不要直接渗透到DAO层(或者mapper层);同理数据表实体对象Entity也不要直接传到Controller层进行输出或展示。

转载于https://www.jianshu.com/p/fd99bebeadea


hhhhh