一、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整合标准开发。