在 spring-integration.xml 中指定我的 bean 的哪种方式更好?

Which way of specifiying my beans in spring-integration.xml is better?

我有两种不同的方法来声明 spring 集成 bean。他们似乎都有效。我正在使用基于 Spring STS Eclipse 的 IDE.

这样:

<bean id="int-ftp:request-handler-advice-chain"
        class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice">
        <property name="trapException" value="true"></property>
        <property name="onFailureExpression" value="#root"></property>
        <property name="failureChannel" ref="errorChannel"></property>
</bean>

或者这样:

<int-ftp:request-handler-advice-chain>
    <bean class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice">
        <property name="trapException" value="true" />
        <property name="onFailureExpression" value="#root" />
        <property name="failureChannel" ref="errorChannel" />
    </bean>
</int-ftp:request-handler-advice-chain>

哪种方式更好?

对于目标 <int-ftp:outbound-gateway> 没关系。效果很好,正如您已经注意到的那样。

唯一的区别是第二个声明是 嵌套 并且最终的 bean 仅在 <int-ftp:request-handler-advice-chain> 上下文中可见。

第一个定义是顶级全局bean,它随处可见,也可以从其他bean中重用。

您可以在 Spring Framework 中找到有关 Inner Beans 的更多信息。