我是靠谱客的博主 能干唇彩,最近开发中收集的这篇文章主要介绍Netty架构篇 - Bootstrap、ServerBootstrap前言源码分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 前言
  • 源码分析
    • Bootstrap
      • 构造器方法
      • group *
      • channel *
      • localAddress *
      • remoteAddress
      • resolver
      • validate *
      • clone
      • option *
      • attr *
      • handler
      • init
      • connect
        • doResolveAndConnect
    • ServerBootstrap
      • 构造器方法
      • group
      • validate
      • clone
      • init
      • ServerBootstrapAcceptor
        • 构造器方法
        • channelRead
        • exceptionCaught
      • bind
        • doBind


前言

本文主要介绍Bootstrap模型在整个Netty底层中的处理逻辑。

概述地讲,ServerBootstrap用于引导ServerChannel,Bootstrap用于引导Channel,使它们更容易被客户端使用。

Netty客户端代码样例。
在这里插入图片描述

Netty服务端代码样例。
在这里插入图片描述


源码分析

注:标*的方法是Bootstrap与ServerBootstrap两者都有的。


Bootstrap

在这里插入图片描述

用于引导Channel为客户端更容易地使用。


构造器方法

在这里插入图片描述

第二个构造器中参数为Bootstrap,表示可以复用其他Bootstrap,将其相关参数赋予给新的Bootstrap。

在这里插入图片描述


group *

在这里插入图片描述

  • EventLoopGroup:用来处理Channel的所有事件。

在这里插入图片描述


channel *

在这里插入图片描述

  • channelClass:用来创建的Channel实例。

在这里插入图片描述
在这里插入图片描述

为channelFactory属性赋值为ReflectiveChannelFactory。

在这里插入图片描述

ReflectiveChannelFactory通过调用Channel的无参构造器方法创建Channel实例。

对应样例的代码,也就是创建NioSocketChannel实例。


localAddress *

在这里插入图片描述

  • localAddress:用于绑定本机地址。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


remoteAddress

在这里插入图片描述

  • remoteAddress:用于连接远程地址。

在这里插入图片描述

在这里插入图片描述


resolver

在这里插入图片描述

  • resolver:用于解析地址。默认是DefaultAddressResolverGroup。

validate *

在这里插入图片描述

要求channelHandler、group、channelFactory属性不为空。

在这里插入图片描述


clone

在这里插入图片描述

在这里插入图片描述

深拷贝Bootstrap。


option *

在这里插入图片描述

为Channel指定参数。


attr *

在这里插入图片描述

为Channel指定属性。


handler

在这里插入图片描述

  • handler:用于处理请求。

指定处理器。


init

在这里插入图片描述

将ChannelHandler添加到ChannelPipeline中。设置channel的参数和属性。


connect

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


doResolveAndConnect

  1. 初始化并注册Channel。
    在这里插入图片描述
    在这里插入图片描述

创建channel。
初始化channel。
注册channel。


  1. 如果注册过程完成,则解析地址并连接远端。

在这里插入图片描述

在这里插入图片描述

直接连接远端。

在这里插入图片描述

解析地址并连接远端。

在这里插入图片描述

使用channel连接远端。(这里不再分析,在channel的文章中会解析)


  1. 如果注册过程没有完成,添加监听器,如果完成,则解析地址并连接远端。

在这里插入图片描述

  • registered():对registered属性设置为true。

ServerBootstrap

ServerChannel的引导类。与Bootstrap的作用类似。

(注:下面仅仅列举与Bootstrap不同的方法。)


构造器方法

在这里插入图片描述
在这里插入图片描述


group

在这里插入图片描述

在这里插入图片描述

指定group、childGroup属性。

在这里插入图片描述


在这里插入图片描述

设置用于子channel的childOptions属性。


在这里插入图片描述

设置用于子channel的childAttrs属性。


在这里插入图片描述

设置用于子channel的childHandler属性。


validate

在这里插入图片描述

要求group、channelFactory、childHandler、childGroup属性不为空。

在这里插入图片描述


clone

在这里插入图片描述

深拷贝ServerBootstrap。


init

在这里插入图片描述

在channelPipeline中添加handler以及一个ServerBootstrapAcceptor实例。


ServerBootstrapAcceptor


构造器方法

在这里插入图片描述


channelRead

在这里插入图片描述

在pipeline中添加childHandler。设置childOptions、childAttrs。

此外,添加一个监听器。用于操作完成时,关闭子channel。

在这里插入图片描述


exceptionCaught

在这里插入图片描述

定时调度设置autoRead为true。

触发异常捕获事件。


bind

在这里插入图片描述

  • validate():要求group、channelFactory属性不为空。

在这里插入图片描述


doBind

在这里插入图片描述

  1. 初始化并注册Channel。
    在这里插入图片描述
    在这里插入图片描述

创建channel。
初始化channel。
注册channel。


  1. 如果注册过程完成,进行绑定。

在这里插入图片描述

在这里插入图片描述

使用channel进行绑定。(这里不再分析,在channel的文章中再进行分析)


  1. 如果注册过程没有完成,添加一个监听器,当操作完成时执行绑定。

在这里插入图片描述

  • registered() :对registered参数设置为true。

最后

以上就是能干唇彩为你收集整理的Netty架构篇 - Bootstrap、ServerBootstrap前言源码分析的全部内容,希望文章能够帮你解决Netty架构篇 - Bootstrap、ServerBootstrap前言源码分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(81)

评论列表共有 0 条评论

立即
投稿
返回
顶部