本文为慕课网《2019版 SpringBoot2.x 打造企业级微信点餐系统》的学习笔记总结一,以备日后回顾
该课程地址:https://coding.imooc.com/class/117.html
1. 课程技术栈:以SpringBoot和微信特性为核心技术栈
后端技术包括:SpringBoot2.x、JPA、MyBatis、Freemarker、WebSocket、基于Redis实现的缓存、分布式Session、分布式锁
微信特性包括:微信扫码登录(需要企业资质账号)、微信网页授权(微信公众号开发测试帐号即可,需要使用到内网穿透工具)、微信支付与退款(需要企业资质账号)
软件版本:SpringBoot2.1.4、JDK1.8
开发项目之前,需要对项目进行详细的分析设计————分角色、功能模块、部署架构、数据库表等多个维度进行分析与设计!!!
2. 新建SpringBoot项目时,通过“Spring Initializr”创建,之后可以一路next完成,在需要相关jar包时到pom中引入即可。
使用某个jar包的常用套路:pom在引入依赖--> application.yml中配置 --> 代码中使用
3. pom中引入的常用jar包
spring-boot-starter-* 起步依赖:是SpringBoot核心之处,它提供了Spring和相关技术的一站式服务,让开发者不再关心Spring相关配置,简化了传统的依赖注入操作过程。
日志: slf4j+logback
Lombok:Lombok可以减少很多重复代码的书写。比如说getter/setter/toString等方法的编写
4. 配置文件
application.yml:通过该配置文件进行项目的统一配置和管理。注意:这个文件中只能配置简单的日志
logback-spring.xml:可以配置复杂日志。在resources文件夹下创建logback-spring.xml文件,并在其中配置日志输出格式及内容,springBoot将自动读取该配置文件
5. 设计与开发顺序
API文档 --> 实体类 --> DAO层(Dao接口、单元测试)--> Service层(Service接口及其实现类、单元测试)--> Controller层
单元测试贯穿Dao层和Service层开发
6. 基于JPA的实体类开发
创建实体类时,类名和属性名都采用驼峰命名法,Jpa会自动转换;并为实体类添加@Entity注解;自增主键添加 @GeneratedValue(strategy = GenerationType.IDENTITY) 注解,否则会报‘关系 "hibernate_sequence" 不存在‘ 的错误;注意@DynamicInsert()、@DynamicUpdate()
7. 基于JPA的Dao层开发
创建dao层接口时,继承自JpaRepository接口
8. 单元测试中加上@Transactional注解后会执行回滚,以保持数据库表数据的干净
9. 编写Service接口及其实现类。
- 所有的业务逻辑都放到Service层实现
10. DTO:数据传输对象,专门用于在各层之间传输数据
- 在各层之间传输数据最好使用DTO对象
11. API文档与统一的返回格式VO
a. 代码未动,文档先行
b. 返回给前端的包——VO
c. 统一创建返回给前端的对象:ResultVO,只返回前端需要的字段,原则上不直接返回实体类因出于信息安全考虑
12. 表单校验
13.使用freemarker时,Controller需要返回ModelAndView对象
14. 自定义几个异常类(需继承自RuntimeException),开发全程如果出现异常则直接抛出异常而无需处理,最后统一进行全局异常处理