一、SSM整合。
1、创建工程。
2、SSM整合。
- Spring
-
- SpringConfig
- MyBatis
-
- MyBatisConfig
- JdbcConfig
- jdbc.properties
- SpringMVC
-
- ServletConfig
- SpringMvcConfig
3、功能模块。
- 表与实体类
- dao(接口+自动代理)
- service(接口+自动代理)
-
- 业务层接口测试(整合JUnit)
- controller
-
- 表现层接口测试(postman)
二、表现层数据封装。
Result
Code
三、异常处理器。
- 框架内部抛出的异常:因使用不合规导致
- 数据层抛出异常:因外部服务器故障导致。(例如:服务器访问异常)
- 业务层抛出异常:因业务逻辑书写 错误导致(例如:遍历业务书写操作,导致索引异常等)
- 表现层抛出的异常:因数据收集、校验等规则导致(例如:不匹配的数据局类型导致异常等)
- 工具类抛出异常:因工具类书写不严谨不够健壮导致。(例如:必要释放的连接长时间没释放)
1、各个层级均出现异常,异常代码书写在那一层呢?
——所有的异常均抛出到表现层处理。
2、表现层处理异常,每个方法中但对书写,代码书写量巨大且意义不大,如何解决呢?——AOP
异常处理器
集中的、统一的处理项目中出现的异常
第一步:controller中创建一个异常处理类ProjectExceptionAdvice
//@RestControllerAdvice用于标识当前类为REST风格对应的异常处理器
@RestControllerAdvice
public class ProjectExceptionAdvice {
//@ExceptionHandler用于设置当前处理器类对应的异常类型
@ExceptionHandler(Exception.class)
public Result doSystemException(Exception ex){
System.out.println("嘿嘿,异常往哪里跑!!");
return new Result(666,null,"嘿嘿,异常往哪里跑!!");
}
项目异常分类。
-
- 业务异常(BusinessException)
-
-
- 规范的用户行为操作产生的异常。
- 不规范的用户操作产生的异常
-
-
- 系统异常(SystemExpection)
-
-
- 项目运行过程中可预计且无法避免的异常。
-
-
- 其他异常(Exception)
-
-
- 编程人员未预期到的异常。
-
四、项目异常处理方案。
-
- 业务异常(BusinessException)
-
-
- 发送对应消息给用户,提醒规范操作
-
-
- 系统异常(SystemExpection)
-
-
- 发送固定消息传递给用户,安抚用户。
- 发送特定消息给运维人员,提醒维护。
- 记录日志
-
-
- 其他异常(Exception)
-
-
- 发送固定消息传递给用户,安抚用户。
- 发送特定消息给编程人员,提醒维护(纳入预期范围)。
- 记录日志。
-
编写自定义系统运行异常类并继承RuntimeException
package com.itheima.exception;
//自定义异常处理器,用于封装异常信息,对异常进行分类
public class SystemException extends RuntimeException{
private Integer code;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public SystemException(Integer code, String message) {
super(message);
this.code = code;
}
public SystemException(Integer code, String message, Throwable cause) {
super(message, cause);
this.code = code;
}
}
编写自定义业务异常类并且继承RuntimeException
//自定义异常处理器,用于封装异常信息,对异常进行分类
public class BusinessException extends RuntimeException{
private Integer code;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public BusinessException(Integer code, String message) {
super(message);
this.code = code;
}
public BusinessException(Integer code, String message, Throwable cause) {
super(message, cause);
this.code = code;
}
五、SSM整合标准开发。