7.4 Pipeline-Value 管道

96
AssassinFGO
2017.04.19 18:56* 字数 317

7.4.1 Pipeline-Value 处理模式

Pipeline-Value 是责任链模式,但是Pipeline-Value 的管道模型和普通的责任链有所不同:

  • 每个 Pipeline 都有特定的 Value(BaseValue),BaseValue 会在最后执行
  • 上层容器的BaseValue 会调用下层容器的管道,FilterChain 其实就是这种模式,FilterChain 相当于 Pipeline,每个 Filter 相当于一个 Value 而BaseValue则是BaseValue。
Pipeline-Value 处理流程图

7.4.2 Pipeline-Value 的实现方法

Pipeline 管道分为生命周期管理和请求处理两个部分。

Pipeline 管道生命周期的实现方法

Container 中的 Pipeline 在ContainerBase 中定义,并且ContainerBase会在其生命周期方法 startInternal、stopInternal 和 destroyInternal 中调用管道对应的方法,注意管道不需要初始化
StandardPipeline 的 Value 是链式结构,通过遍历进行 Value 的执行。

startInternal 和stopInternal
getValue

Pipeline 管道处理请求的实现方法

Pipeline 管道处理请求是通过逐层调用下一级的 Pipeline 来进行的。Connector 接受到请求后会调用最顶层容器的 Pipeline 来处理,顶层容器的 Pipeline 会在BaseValue里调用下一层的Pipeline 进行处理,直到最后调用了 Wrapper 的 Pipeline 所包含的 BaseValue——StandardWrapperValue。

StandardEngineValue 的 invoke 方法

s
s
s
s
s
s
s
s
s
s

看透SpringMvc源码