Netty-ServerBootstrap

Netty 引导类

Netty 中有两个引导帮助器, Bootstrap 和 ServerBootstrap。其中 Bootstrap 用于引导客户端 Channel 使用, ServerBootstrap 用于引导服务端 Channel 使用。Netty 引导类使得创建客户端和服务只需要遵循模板编写即可。Bootstrap 和 ServerBootstrap 都继承 AbstractBootstrap ,它支持语法糖,是一个抽象类。主要封装了 Bootstrap 和 ServerBootstrap 的共有方法。用于服务器通道的一系列配置,例如:绑定 NioEventLoopGroup 线程组,指定指定NIO的模式,指定子处理器,用于处理 workerGroup, 指定端口等。

ServerBootstrap

ServerBootstrap 用于引导服务端 Channel 使用。

Bootstrap

Bootstrap 用于引导客户端 Channel 使用。

AbstractBootstrap 类

类定义

// 类型定义
public abstract class AbstractBootstrap<B 
  extends AbstractBootstrap<B, C>, C extends Channel> implements Cloneable

// 实现语法糖
private B self() {
    return (B) this;
}

这里用到了泛型定义,B 必须是 AbstractBootStrap 的子类,C 是 Channel 的子类,其中 B 作为泛型,结合 self() 方法实现连续调用。调用 self 函数,当引导类为 ServerBootstrap 那么返回的实例对应的类便是 ServerBootstrap ,如果引导类是 Bootstrap ,那么返回的实例对应的类便是 Bootstrap,非常巧妙的设计。

成员变量

包含的成员变量有以下这些:

volatile EventLoopGroup group;
@SuppressWarnings("deprecation")
private volatile ChannelFactory<? extends C> channelFactory;
private volatile SocketAddress localAddress;

// The order in which ChannelOptions are applied is important they may depend on each other for validation
// purposes.
private final Map<ChannelOption<?>, Object> options = new LinkedHashMap<ChannelOption<?>, Object>();
private final Map<AttributeKey<?>, Object> attrs = new ConcurrentHashMap<AttributeKey<?>, Object>();
private volatile ChannelHandler handler;

ServerBootstrap 类


private final Map<ChannelOption<?>, Object> childOptions = new LinkedHashMap<ChannelOption<?>, Object>();
private final Map<AttributeKey<?>, Object> childAttrs = new ConcurrentHashMap<AttributeKey<?>, Object>();
private final ServerBootstrapConfig config = new ServerBootstrapConfig(this);
private volatile EventLoopGroup childGroup;
private volatile ChannelHandler childHandler;

posted @ 2022-01-24 00:18  yaomianwei  阅读(227)  评论(0编辑  收藏  举报