0
点赞
收藏
分享

微信扫一扫

ClickHouse学习笔记(六):ClickHouse物化视图使用

其生 2024-01-21 阅读 8

        在分享SpringMVC之前,我们先对MVC有个基本的了解。MVC(Model-View-Controller)指的是一种软件思想,它将软件分为三层:模型层、视图层、控制层

1、什么是Spring MVC

        简单来说,SpringMVC是Spring对MVC设计思想的一种实现,实现的一个用于接收Web请求,响应请求的模块,其简易架构如图所示:

        其中,核心组件及其作用如下:

      当前端发送一个请求后(请求即一个url路径),会先到达MVC过滤器,通过过滤器筛选后,通过的请求接下来会来到DispatcherServlet开始请求的分发,在分发之前它会先和HandlerMapping进行交互,HandlerMapping会判断请求路径中url是否有对应的的Controller可以进行处理,如果有,则将该信息返回给DispatcherServlet后由它来调用对应的Controller处理请求,在调用Controller之前,请求还会经过一个HandlerInterceptor拦截器(拦截器功能和过滤器相似),在拦截器中就可以进行一些控制用户的访问操作;Controller接收请求后调用该请求所对应的Service业务以及数据库,数据库返回数据后再将该返回的数据逐层返回至前端,返回的数据即为服务器的responce(响应)。

2、SpringMVC运行流程详解图:(面试可能会用到)

3、SpringBoot 整合MVC依赖

        添加spring-web依赖,该框架提供了Spring MVC依赖支持,由于Spring boot Web的核心是SpringMVC,所以Spring基础框架的所有功能都适用与Spring boot Web,例如组件扫描、自动装配等

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

4、SpringMVC——RESTful

REST原则: 

①URI代表着一个资源,是一个实体,应该是名词,而不要把具体的动作放在URL中,对资源的操作应该通过HTTP的动词来实现

②使用适合的状态码,而不应该全部都返回状态码 200

5、响应结果对象设计

         设计响应结果对象的主要目的是为了在 API 接口中提供一种统一的数据格式,便于客户端程序进行处理和解析。通过定义响应结果对象,可以将 API 接口返回的数据封装成一个标准的数据结构,这样客户端程序就能够定位出需要的数据,而不必关心底层的具体实现。

        响应结果对象通常包含以下属性:

  • 状态码 (status code):表示请求处理的状态,如 200 表示成功,400 表示请求参数错误等。
  • 错误信息 (error message):当发生错误时,返回的错误提示信息,以便客户端程序进行修复或者调试。
  • 数据结果 (data):API 接口返回的请求结果数据,可能是一个单独的对象或者一个数组等

        响应结果代码的设计:

@Data
public class JsonResult {
  /**状态码*/
  private Integer state = 1; //1表示OK,0表示Error
  /**状态信息*/
  private String message = "ok";
  /**封装正确的查询结果*/
  private Object data;

  public JsonResult(){}
  
  //在修改成功或删除成功时会使用的构造方法,例如将message改为“修改成功/删除成功等”
  public JsonResult(String msg){
    this.message = msg;
  }

  //当出现异常时使用的构造方法
  public JsonResult(Integer state,String message){
    this(message);
    this.state = state;
  }

  //当查询成功时使用的构造方法
  public JsonResult(Object data){ //new JsonResult(list)
    this.data = data;
  }
  //当出现异常时,可以通过此构造方法对异常信息进行封装
  public JsonResult(Throwable exception){ //new JsonResult(exception);
    this(0,exception.getMessage()); //该方法还会调用第三个构造方法
  }
 
}

6、统一异常处理设计

        异常处理类是一种用于在程序执行期间捕获并处理异常情况的机制,如果没有异常处理类,一旦程序执行发生问题,Controller会将该问题抛给前端控制器,前端控制器会将错误直接抛给用户,而用户并不希望看到这些错误也没办法理解错误的含义,我们希望程序能够拦截错误并且告诉开发者,让我们去接解决。 

        另外,异常处理类可以将异常处理逻辑与业务逻辑分离开来,使程序的代码更加清晰、易于理解和维护,并且使得我们只需要编写一次异常处理逻辑,而不是在每个代码块中都写一遍,简化代码。

异常处理逻辑:

统一异常处理代码设计:

/*@RestControllerAdvice 注解描述的类为全局异常处理类,启动时会交给Spring管理*/
@RestControllerAdvice //是@ControllerAdvice和@ResponseBody的组合
public class GlobalExceptionHandler {
//表示为当前异常处理类生成一个日志对象
   private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
   
   /*@ExceptionHandler注解描述的方法为异常处理方法,注解中定义的异常类型为方法可以处理的异常类型*/
   @ExceptionHandler(RuntimeException.class)
   public JsonResult doHandleRuntimeException(RuntimeException e){
       e.printStackTrace();
       log.error("exception msg is {}",e.getMessage());
        //该方法会调用JsonResult中的异常处理构造方法
       return new JsonResult(e);
   }
   //可以定义多个异常处理方法
}

—————————————————————

路漫漫其修远兮,吾将上下而求索~
到此关于SpringMVC框架的讲解就暂时结束啦后续随着博主的功力增加会不断更新(#^.^#),

写作不易,如果你认为博主写的不错!

请点赞、关注、评论给博主一个鼓励吧,您的鼓励就是博主前进的动力。

举报

相关推荐

0 条评论