高级
DefaultChannelPipeline 创建过程
在初始化Bootstrap的时候,会指定NioSocketChannel.class,此时channel会被封装到ReflectiveChannelFactory(反射工厂),在创建 反射工厂实例的时候通过反射创建NioSocketChannel实例,NioSocketChannel实例创建后会进行一系列的初始化操作,他会在构造中 调用他的抽象父类AbstractNioByteChannel->AbstractNioChannel->AbstractChannel对DefaultChannelPipeline进行实例化。
技术点
- 每一个ChannelHandler在初始化实例的时候都会为其创建一个独立的ChannelHandlerContext实例绑定;该上下文的实例实在DefaultChannelPipeline中创建的。
private AbstractChannelHandlerContext newContext(EventExecutorGroup group, String name, ChannelHandler handler) {
return new DefaultChannelHandlerContext(this, childExecutor(group), name, handler);
}