此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

可以使用对 的引用来配置连接工厂。 您可以使用侦听器向连接添加行为,例如协商、安全性和其他选项。 框架当前不提供侦听器,但有关示例,请参阅源存储库中的 InterceptedSharedConnectionTestsTcpConnectionInterceptorFactoryChainSpring中文文档

测试用例中使用的工作原理如下:HelloWorldInterceptorSpring中文文档

侦听器首先配置客户端连接工厂。 当通过截获的连接发送第一条消息时,拦截器会通过连接发送“Hello”,并期望接收“world!”。 发生这种情况时,协商完成并发送原始消息。 此外,使用相同连接的消息无需任何额外的协商即可发送。Spring中文文档

当配置了服务器连接工厂时,拦截器要求第一条消息为“Hello”,如果是,则返回“world!”。 否则,它会引发异常,导致连接关闭。Spring中文文档

所有方法都被拦截。 拦截器工厂为每个连接创建拦截器实例。 如果侦听器是有状态的,则工厂应为每个连接创建一个新实例。 如果没有状态,则同一拦截器可以包装每个连接。 拦截器工厂将添加到拦截器工厂链的配置中,您可以通过设置属性将其提供给连接工厂。 拦截器必须扩展. 工厂必须实现该接口。 具有直通方法。 通过扩展此类,您只需要实现要截获的那些方法。TcpConnectioninterceptor-factoryTcpConnectionInterceptorSupportTcpConnectionInterceptorFactoryTcpConnectionInterceptorSupportSpring中文文档

以下示例演示如何配置连接拦截器工厂链:Spring中文文档

<bean id="helloWorldInterceptorFactory"
    class="o.s.i.ip.tcp.connection.TcpConnectionInterceptorFactoryChain">
    <property name="interceptors">
        <array>
            <bean class="o.s.i.ip.tcp.connection.HelloWorldInterceptorFactory"/>
        </array>
    </property>
</bean>

<int-ip:tcp-connection-factory id="server"
    type="server"
    port="12345"
    using-nio="true"
    single-use="true"
    interceptor-factory-chain="helloWorldInterceptorFactory"/>

<int-ip:tcp-connection-factory id="client"
    type="client"
    host="localhost"
    port="12345"
    single-use="true"
    so-timeout="100000"
    using-nio="true"
    interceptor-factory-chain="helloWorldInterceptorFactory"/>