推荐的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/ModelView层(视图层) 前台jsp页面表示Controller(控制层) 负责具体的业务模块流程控制Service(业务层) 负责业务模块逻辑应用设计; 有利于业务逻辑的独立性和重复利用性Dao/Mapper(持久层) 数据持久化,数据库CRUD接口,封装了对数据库持久化操作。Entity/Model(实体层) 也称为pojo层,定义与数据库对象应的属性以及属性get/set方法的类Config(配置层) 用于存放springboot相关的配置类。Dto(数据传输层) Data Transfer Object; 用于前后端数据交互 为什么要定义 UserServier UserServiceImpl 2个? 原因:可能有不同数据库, Service类设计成一个接口,使控制层只依赖这个接口;这样,当某天这个应用要跑在其它数据库上时,就而只需要增加一个serviceImpl类。