前言
距离本学期结束就要去实习的时间已经很短了,那么在这里我帮助大家完整的回忆一下SpringBoot的完整操作,为了更加直接体现完整的过程我会使用层叠法来完成这个系列文章,会从最新版本idea社区版本的下载开始,直至我们代码开发的整个阶段,可以将接口完全搞出来,跨域后让前端的项目可以解析,完成整个开发的闭环操作,准备工作的孩子们可以持续的跟着看看,应该会给你提供比较大的帮助。
声明:由于刚毕业的还比不可能上来就上大的微服务架构,所以这里不提供springcloud内容,当然我会在下一个系列中将本次学到的整个springboot融入到springcloud中。
系统与开发环境
系统:Windows 11 家庭中文版
idea:官网2024年1月最新社区版本:ideaIC-2024.1
数据库:阿里云RDS for MySQL 5.7
基础idea环境搭建
基础maven配置(外部独立maven)
基础maven默认配置(默认maven)
SpringBootWebProject学习正文——各类包层级说明
在Spring Boot项目中,通常会按照功能或者模块的不同将代码组织到不同的包中。下面是一些常见的包层级及其功能说明:
- controller(控制层):该包主要用于处理用户请求和响应,负责接收用户的请求,调用相应的服务进行处理,并返回响应给用户。
- service(服务层):该包主要用于实现业务逻辑,包含一些具体的业务处理方法。服务层一般会调用DAO层进行数据的读取和写入。
- dao(数据访问层):该包主要用于与数据库进行交互,负责数据的读取和写入操作。通常会使用ORM框架(如MyBatis、Hibernate)或者JPA来简化数据库操作。
- entity(实体类):该包主要用于定义与数据库表对应的实体类,每个实体类通常对应数据库中的一张表。实体类中的属性与表中的字段一一对应。
- repository(仓库层):该包主要用于定义数据访问接口,通过接口来操作数据库。一般会使用Spring Data JPA来简化数据访问接口的编写。
- config(配置类):该包主要用于存放项目的配置类,如数据库配置、缓存配置、消息队列配置等。配置类中通常会使用注解来标识配置信息。
- util(工具类):该包主要用于存放一些通用的工具类,如日期处理工具类、加密解密工具类、文件操作工具类等。
- exception(异常处理):该包主要用于定义项目中的异常类,如自定义的业务异常、全局异常处理器等。
- dto(数据传输对象):该包主要用于定义数据传输对象,用于在不同层之间传递数据。DTO通常会与实体类相似,但可能只包含实体类的部分属性。
- constant(常量定义):该包主要用于定义项目中使用的常量,如错误码、配置项等。
以上内容中说明了各层的作用,其中的【controller】与【repository】两个我们已经在之前的文章中使用过了接下来我们来创建一下其它在层级。
这是我们前的项目,我们在此基础上创建后续内容。
创建其它代码层
这里常用的我们逐一的创建一下:
SpringBoot项目中的各类包层级的作用,为什么要这么分?
在Spring Boot项目中,各类包层级的作用是为了更好地组织和管理代码,提高代码的可读性、可维护性和可扩展性。下面是一些常见的包层级及其作用:
com.example.project(或其他自定义的根包):该包通常用于存放项目的主要代码,是整个项目的入口。
com.example.project.controller:该包用于存放控制器(Controller)类,负责处理请求和响应。
com.example.project.service:该包用于存放服务(Service)类,负责处理业务逻辑。
com.example.project.repository:该包用于存放数据访问层(Repository)类,负责与数据库进行交互。
com.example.project.model:该包用于存放实体类(Model)或数据传输对象(DTO),用于封装数据。
com.example.project.config:该包用于存放配置类,如数据库配置、缓存配置等。
com.example.project.exception:该包用于存放异常处理类,负责处理项目中的异常情况。
com.example.project.util:该包用于存放工具类,如日期处理、加密解密等通用功能。
com.example.project.constant:该包用于存放常量类,如错误码、常量配置等。
com.example.project.aspect:该包用于存放切面类,负责处理项目中的切面逻辑,如日志记录、权限控制等。
这样的包层级划分有以下好处:
提高代码的可读性和可维护性,使代码结构清晰明了。
方便团队协作,不同的开发人员可以根据包的职责进行分工。
便于扩展和重用,可以根据需求添加新的功能模块或替换现有的模块。