Spring MVC 处理异步请求(下)- Spring 中的实例 发表于 2018-11-26 本文接上面一章 Callable 的原理详解,给出 Spring MVC 处理异步请求的代码实例。Spring 中有两种返回异步请求的类,分别是 Callable 和 DeferredResult,两者各有不同,不同在哪里呢?我们正文见~ 阅读全文 »
Spring MVC 处理异步请求(上)- CALLABLE 详解 发表于 2018-11-07 | 更新于 2018-11-21 Spring MVC 现在支持了异步请求的处理,该请求将会返回一个 Callable 对象,而 Callable 需要交给线程池去处理其中的逻辑。这就说明服务器可以将耗时较长的请求处理逻辑放入 Callable 中,交由其他线程处理。这便使主线程可以去处理请求,高效分配线程资源。本文将是 Spring MVC 处理异步请求的准备篇,我们将基于一个 Callable demo,看看 Java 的线程池处理 Callable 的原理,而在这之后,我们将会带来 Spring MVC 是如何处理异步请求的实例。 阅读全文 »
WebApplicationContext 中特殊的 bean 类型(三)--- MultiPartResolver 发表于 2018-11-07 | 更新于 2018-11-20 Spring MVC 支持文件上传,本文将基于 MultiPartResolver 的实现,讲述 MultiPartResolver 是何时生效,并且如何将上传的文件数据解析成为 Controller 认识的样子,存入我们服务器的路径下。 阅读全文 »
WebApplicationContext 中特殊的 bean 类型(二)--- LocaleResolver 发表于 2018-11-01 | 更新于 2018-11-20 Spring MVC 也为网页应用的国际化提供了一些准备,使用 LocaleResolver 将可以解析用户 request 头部来检查用户的请求来自什么地区,用户的浏览器支持哪些语言,并且可以返回对应语言的 jsp 页面。本文将基于 LocaleResolver 的源码,解析 LocaleResolver 是如何通过请求解析,返回对应资源的。 阅读全文 »
WebApplicationContext 中特殊的 bean 类型(一)--- 请求/异常处理 发表于 2018-10-29 | 更新于 2018-11-20 本文介绍了 Spring MVC 中重要的功能 --- 请求映射以及 Exception 的处理,从 Spring MVC 4.0 之后,文档推荐使用注释驱动型的工程。因此请求映射变得简单,只要在对应类上标志上 Controller 注解即可。对于 Exception 的处理,则有着一些需要注意的地方,其中,你既可以实现 HandlerExceptionResolver 接口来捕获全局范围内的你想捕获的 Exception 具体实现类;也可以使用 @ExceptionHandler 注解来实现一个基类中的一个方法,并让其他 Controller 类继承该基类。两者的使用特点有些不同,因此适用于不同的情况。 阅读全文 »
Spring MVC 4.2.4 文档实践(一) 发表于 2018-10-12 | 更新于 2018-11-20 本文将开启一个专题,讲述自己在学习 Spring MVC 文档的过程中的所思所想,以及相关知识点的背后的原理,源码的解析,希望可以帮助加深对 Spring 文档的理解。本文记录了如何开始一个 Spring MVC 工程,为后续的拓展做准备。 阅读全文 »
Log4j 2 Async Logging 的原理和实现 发表于 2018-10-12 | 更新于 2018-10-26 众所周知,企业级应用的日志系统容易成为性能瓶颈,高并发场景下,如果你调用 jstack 一般会发现栈调用都会卡在 log 类上面,现有的解决方法是使用异步日志系统 AsyncLogger。然而传统的 AsyncLogger 都使用了消息队列的形式,因此引入了阻塞和等待的时间,这也会引发性能损耗。而 Log4j 2 的异步日志引入了 Disruptor 的数据结构,解决了引入锁而引发的问题,本文将基于 Log4j 2 源码讲述 Log4j 2 异步日志的原理。 阅读全文 »