Bootstrap启动类层次结构:
为什么引导类是 Cloneable 的 ?
你有时可能会需要创建多个具有类似配置或者完全相同配置的Channel。为了支持这种模式而又不 需要为每个Channel都创建并配置一个新的引导类实例,AbstractBootstrap被标记为了 Cloneable 。在一个已经配置完成的引导类实例上调用clone()方法将返回另一个可以立即使用的引
导类实例。 注意,这种方式只会创建引导类实例的EventLoopGroup的一个浅拷贝,所以,后者将在所有克隆的Channel实例之间共享。这是可以接受的,因为通常这些克隆的Channel的生命周期都很短暂,一 个典型的场景是——创建一个Channel以进行一次HTTP请求。
AbstractBootstrap类的完整声明
//B这种写法是为了支持链式编程 public abstract class AbstractBootstrap<B extends AbstractBootstrap<B, C>, C extends Channel>
ServerBootstrap
handler()方法和 childHandler()方法之间的区别是:前者所 添加的 ChannelHandler 由接受子 Channel 的 ServerChannel 处理,而 childHandler()方法所添加的ChannelHandler将由已被接受的子Channel 处理,其代表一个绑定到远程节点的套接字
AttributeKey
在netty生命周期内获取范围之外的属性值