类加载是工作和面试过程中常涉及的问题,类加载器顾名思义是用来加载类的一种工具。除了常见的诸如“双亲委派原则”问题,还有其他热部署,字节码增强等高级特性也与类加载器有关。本文从JDK和JVM两个层面来梳理一下Java中的类加载器及其实现。
在Java中的类加载器一文中介绍过Java中的类加载器以及它们的创建和初始化过程,它们本身之间并没有很强的关系,而且应用类加载器和扩展类加载器是由Java代码实现在JDK中的,而启动类加载器则是通过C++代码实现在Hotspot VM源码中的。而类加载过程则会串联起来这几个类加载器,而这正是本文要分析的内容。
在前面的MyBatis中Mapper接口的扫描过程一文中介绍到,MyBatis将扫描到的mapper接口对应的bean定义的类型设置为了MapperFactoryBean。这是一个FactoryBean,Spring会调用它的getObject方法来创建mapper对象。本文就来分析一下这是怎样一个过程。
NioEventLoop是Netty中最常使用的一种事件循环实现,在NioEventLoopGroup的创建过程中就会创建该类型的事件循环。本文分析一下创建过程中做了哪些操作,以及最重要的事件循环是怎样的。
当通道发生操作时,需要用通道处理器来处理这些事件。Netty中将事件的处理和业务进行解耦,让用户只需要编写处理事件的逻辑,将其封装在通道处理器中,然后添加到通道流水线中即可。这样事件发生时,会自动调用到通道处理器中的事件处理逻辑。本文来分析一下通过流水线的实现原理。
在使用Spring Cloud Gateway时,需要配置路由,以便将不同的请求转发到不同的服务上。路由配置有两种,一是在配置文件中配置,而是自定义RouteLocator来进行代码配置。当请求到达Spring Cloud Gateway时,会获取所有路由信息,然后通过断言来匹配路由。本文就来分析一下Spring Cloud Gateway是怎么实现路由管理的。
Environment是Spring Framework中提供的一个接口,旨在为属性获取提供一个统一的接口。不管是在Spring Framework,还是在Spring Boot,甚至在Spring Cloud中,很多地方都能见到该接口及其实现类,所以熟悉该接口的内部实现还是很有必要的。
ConfigurationClassParser类会被ConfigurationClassPostProcessor用来处理配置类,可以说该类完成了registry后置逻辑的大部分工作。本文分析该类的主要工作流程和实现原理。
ReactorNetty是Spring官方实现的一款框架,被广泛作为Spring中WebFlux的服务器实现,比如Spring Cloud Gateway默认就使用该框架。在SpringBoot中的Web容器一文中介绍过Reactive容器大概的启动过程,但是并没有深入分析,本文就来深入ReactorNetty看一下是怎么实现的。