java springboot 目录组织架构介绍

推荐的package组织方式

com+- example+- myproject  // root package=com.example.myproject,所有的类和其他package都在root package之下。+- Application.java // 应用主类+- domain // 用于定义实体映射关系与数据访问相关的接口和实现|  +- Customer.java|  +- CustomerRepository.java+- service // 用于编写业务逻辑相关的接口与实现|  +- CustomerService.java+- web // 用于编写Web层相关的实现,比如:Spring MVC的Controller等|  +- CustomerController.java

项目分层

  • View -> Controller -> Service -> Dao/Mapper -> Entity/Model
  • View层(视图层) 前台jsp页面表示
  • Controller(控制层) 负责具体的业务模块流程控制
  • Service(业务层) 负责业务模块逻辑应用设计; 有利于业务逻辑的独立性和重复利用性
  • Dao/Mapper(持久层) 数据持久化,数据库CRUD接口,封装了对数据库持久化操作。
  • Entity/Model(实体层) 也称为pojo层,定义与数据库对象应的属性以及属性get/set方法的类
  • Config(配置层) 用于存放springboot相关的配置类。
  • Dto(数据传输层) Data Transfer Object; 用于前后端数据交互

为什么要定义 UserServier UserServiceImpl 2个?

  • 原因:可能有不同数据库, Service类设计成一个接口,使控制层只依赖这个接口;
  • 这样,当某天这个应用要跑在其它数据库上时,就而只需要增加一个serviceImpl类。