SpringBoot1:项目目录

SpringBoot1:项目目录

根据分层进行设计

这种模式是我们常见的根据MVC的基础概念进行分层的。
  • Model(模型)表示应用程序核心(比如数据库记录字段)。
  • View(视图)显示数据(数据库记录)。
  • Controller(控制器)处理输入(写入数据库记录)。
 

模型

domain目录下面,放的就是项目的模型层。在实际操作中,它还可能有下面几种名字,在普通项目中区别不大,你最好在项目中保持相同的意义来避免歧义。
  • entity 这个意义比较明显,就是实体的意思,最常用
  • model模型的意思,一般用来在不同系统之间交互。但如果你的模型非常简单,直接用entity来表示也是可以的
  • domain 这个范围有点大,在许多国外项目中经常使用。这个是表达意义上的差异,和model其实是差不多的。在DDD的场景中意义要更大一些。
由于model和domain的范围是比较大的,我通常在项目中使用entity来表示和数据库的交互。在JPA之类的ORM中,也是做相关处理的。比如javax.persistence.Entity注解。

Dao

dao层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作。在一些其他框架中,还会叫别的名字。
  • mapper 这个一般是Mybaits之类的框架所生成的目录,通常是一些接口。
  • repository 仓库的意思,在jpa中经常用。
Dao应该满足最小封装原则,理论上只涉及一句SQL的执行。如果有多个数据的存取动作,需要封装在Service中,并用事务进行管理。

service和controller

这个没什么好说的,基本上所有重要的逻辑都在这里完成。service用于逻辑处理,controller用于接口暴露。
 
 
 
  • 代码层(java),根目录com.xxx: XxxApplication.java + 对应模块代码(domain + controller + service + mapper等)
  1. XxxApplication.java(项目主入口,main方法)
  1. controller: 控制层,请求接口
  1. service: 服务层,逻辑代码, 数据服务的实现接口(serviceImpl)UserService.java 和 UserServiceImpl.java
  1. mapper: 数据层,或者dao, 比如UserMapper.java 、UserMapper.xml
  1. domain: 实体类,同 bean、entity、model
    1. bean: 任何一个java类都可以成为一个bean,这个类里包含对象的属性、get、set方法及其他的业务逻辑。
      model: model是MVC中的概念,可以理解为View层展示数据的对象。
      entity:数据表对应到实体类的映射。
  • 资源层(resource):存放资源文件,比如邮件html、mapper
  1. email邮件模板,比如registerSuccess.html
  1. properties配置文件,比如mybatis.properties
  1. mapper文件,比如UserMapper.xml(也可以写到代码层的mapper文件夹中)
  1. template模板
  1. application.yml
  1. log4j2.xml日志配置
 
  • entity:实体类,也可以命名为bean、entity、model,例如User.java
  • controller: 控制层,请求接口,例如UserController.java
  • service: 服务层,以及关联的接口文件,例如UserService.java(impl/UserServiceImpl.java)
  • mapper: 数据层,也可以命名为dao,例如UserMapper.java和UserMapper.xml
  • model: 请求使用到的实体类: xxxRequestTO.java、xxxReponseTO.java
  • config、constant、util等配置文件
  • XxxApplication.java : 项目主入口,main方法
 
 
JavaWeb 黑马旅游网 项目结构:
  • dao包
  • domain包
  • service包
  • utils包
  • web包
  • impl包
notion image

1、dao包

Dao:数据库相关操作 数据访问。
Dao 数据访问层:就是用来访问数据库实现数据的持久化(把内存中的数据永久保存到硬盘中 )。

2、domain包

domain:实体类(entity)

3、service包

在此层做相应的业务逻辑处理。

4、utils包

工具包

5、web包

一般 存放 servlet 和 filter 。

6、impl包

impl是implement的简写,换言之,放置的应该是接口的实现类。
一般三层开发中,service层和dao层都会有接口及其实现类,为了项目能更好的管理和开发,一般将接口放一个包,实现类放置在这个包的子包中。