林烟夜暖

阅读JDK、框架源码的总结,微服务、RPC、服务治理实践等

Netty NioEventLoop分析

NioEventLoop

Netty NioEventLoop分析 本文分析Netty最核心的Reactor线程(NIO线程)——NioEventLoop的创建、启动和执行过程。 一、NioEventLoopGroup/NioEventLoop的创建 NioEventLoop的创建,首先需要看NioEventLoopGroup的创建过程,因为NioEventLoop是在NioEventLoopGroup初始化的...

Spring Boot下的Servlet、Filter、Listener加载流程分析

ServletContainerInitializer/ServletContextInitializer

Spring Boot下的Servlet、Filter、Listener加载流程分析 本文将详细分析Spring Boot中Servlet、Filter、Listener的加载流程,包括DispatcherServlet的注册。读者阅读之前,最好先阅读Spring MVC和Servlet规范相关的内容,参考Spring MVC。 一、Servlet、Filter、Listener的注册方...

Spring MVC基于Java Config配置的启动流程分析

ServletContainerInitializer/WebApplicationInitializer

Spring MVC基于Java Config配置的启动流程分析 本文将分析Spring MVC基于Java Config配置的启动流程,由于基于Java Config配置的核心启动流程与基于XML配置的启动流程类似,所以阅读本文前请先阅读Spring MVC启动流程分析(xml配置)、Spring MVC DispatcherServlet处理用户请求的流程分析、Spring MVC之S...

Spring MVC之Servlet2.x与Servlet3.x的区别

ServletContextListener/ServletContainerInitializer

Spring MVC之Servlet2.x与Servlet3.x的区别 一、基于Servlet 2.x的Web应用 1.定义Servlet public class EchoServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServl...

Spring MVC HttpMessageConverter转换请求和响应数据的过程分析

HttpMessageConverter

Spring MVC HttpMessageConverter转换请求和响应数据的过程分析 转自HttpMessageConverter是这样转换数据的 Java Web 人员经常要设计 RESTful API,通过 json 数据进行交互。那么前端传入的 json 数据如何被解析成 Java 对象作为 API入参,API 返回结果又如何将 Java 对象解析成 json 格式数据返回给...

Spring MVC DispatcherServlet处理用户请求的流程分析

DispatcherServlet/HandlerMapping/HandlerAdapter/ViewResolver

Spring MVC DispatcherServlet处理用户请求的流程分析 在前一篇文章Spring MVC启动流程分析(xml配置)中,详细探讨了Spring MVC在Web容器中部署后的启动过程,以及相关源码分析,同时也讨论了DispatcherServlet类的初始化创建过程。本文主要讲解DispatcherServlet类获取用户请求到响应的全过程,并针对相关源码进行分析。 ...

Spring MVC启动流程分析(xml配置)

ContextLoaderListener/DispatcherServlet

Spring MVC启动流程分析(xml配置) 熟悉SpringMVC的启动过程,有助于理解相关文件配置的原理,深入理解SpringMVC的设计原理和执行过程。 一、Web应用部署初始化过程 (Web Application Deployement) 参考Oracle官方文档Java Servlet Specification,可知Web应用部署的相关步骤如下: 当一个Web应用...

ConfigurationClassPostProcessor源码分析

ConfigurationClassParser/ConfigurationClassBeanDefinitionReader/ConfigurationClassEnhancer

ConfigurationClassPostProcessor源码分析 ConfigurationClassPostProcessor的类继承图如下: 可见ConfigurationClassPostProcessor实现了BeanDefinitionRegistryPostProcessor、BeanFactoryPostProcessor和PriorityOrdered这三个接口...

Netty服务端启动流程分析

ServerBootstrap/AbstractBootstrap

Netty服务端启动流程分析 Netty服务端启动过程主要分为四个步骤:创建NioServerSocketChannel、初始化NioServerSocketChannel、注册NioServerSocketChannel到Selector及绑定端口。下面以如下的Netty服务端启动Demo为例,展开Netty服务端启动流程的分析。 public final class Server {...

Spring AOP源码分析(二)——创建代理对象

AbstractAutoProxyCreator/ProxyFactory/JdkDynamicAopProxy/CglibAopProxy

Spring AOP源码分析(二)——创建代理对象 上一篇文章Spring AOP源码分析(一)——筛选合适的通知器,分析了Spring是如何为目标bean筛选合适的通知器的。现在通知器选好了,接下来就要通过动态代理的方式将通知器(Advisor)所持有的通知(Advice)织入到bean的某些方法前后(即创建代理对象)。与筛选合适的通知器相比,创建代理对象的过程则要简单不少。下面先来了解...