Java 如何基于环境变量打开/关闭Spring集成渠道?

Java 如何基于环境变量打开/关闭Spring集成渠道?,java,environment-variables,spring-integration,Java,Environment Variables,Spring Integration,我有一个通道,用作链中的输入通道。我只需要在环境变量sd不为真时使用它。是否可以在不创建额外Java过滤器的情况下将此条件写入spring集成文件?因此,我希望这个链在启动脚本中-Dsd=true时不起作用,而在任何其他情况下都起作用 <int:channel id="sdCreationChannel"> <int:queue/> </int:channel> <int:chain input-channel="sdCreationChann

我有一个通道,用作链中的输入通道。我只需要在环境变量sd不为真时使用它。是否可以在不创建额外Java过滤器的情况下将此条件写入spring集成文件?因此,我希望这个链在启动脚本中-Dsd=true时不起作用,而在任何其他情况下都起作用

<int:channel id="sdCreationChannel">
    <int:queue/>
</int:channel>

<int:chain input-channel="sdCreationChannel" output-channel="debugLogger">
    <int:poller fixed-delay="500" />
    <int:filter ref="sdIntegrationExistingRequestSentFilter" method="filter"/>
    <int:transformer ref="sdCreationTransformer" method="transformOrder"/>
    <int:service-activator ref="sdCreationServiceImpl" method="processMessage">
        <int:request-handler-advice-chain>
            <ref bean="retryAdvice"/>
        </int:request-handler-advice-chain>
    </int:service-activator>
</int:chain>

是一个正常的
端点
,可以根据
生命周期
合同启动/停止

因此,您可以在任何时间或任何条件下,在运行时通过其
id
启动/停止它

另一个技巧是,只需将
auto startup=“false”
添加到基于该变量的定义中即可

M-M-M。我认为,即使使用普通属性占位符也应该可以:

<int:chain auto-startup="${myChain.autoStartup}">
更新

根据你的担心:

因此,我希望这个链在启动脚本中-Dsd=true时不起作用,而在任何其他情况下都起作用

正如我上面所说的:您只能从一开始就在
auto startup=“false”
中标记它,例如使用相同的
环境

<int:chain auto-startup="#{environment.getProperty('sd', true)}">

请看问题说明:“因此,我希望此链在启动脚本中-Dsd=true时不起作用,而在任何其他情况下都起作用。”
<int:chain auto-startup="#{environment.getProperty('sd', true)}">