Spring integration spring集成上下文配置中的Bean引用
当我在Spring集成存储过程出站网关的存储过程的参数中使用bean引用时,我试图确定我的bean引用未被识别的原因。我已经能够在这两者之间放置一个服务激活器,并使用bean作为有效负载创建一条新消息,它工作得很好。但是为什么我不能用真正的豆子呢 下面是一段代码:Spring integration spring集成上下文配置中的Bean引用,spring-integration,Spring Integration,当我在Spring集成存储过程出站网关的存储过程的参数中使用bean引用时,我试图确定我的bean引用未被识别的原因。我已经能够在这两者之间放置一个服务激活器,并使用bean作为有效负载创建一条新消息,它工作得很好。但是为什么我不能用真正的豆子呢 下面是一段代码: <bean id="updateDataContentsMapper" class="org.companyname.connector.support.UpdateDataContentsMapper" depends
<bean id="updateDataContentsMapper" class="org.companyname.connector.support.UpdateDataContentsMapper" depends-on="updateDataContents">
<property name="updateDataContents" ref="updateDataContents"/>
</bean>
<bean id="updateDataContents" class="org.companyname.connector.model.UpdateDataContents"/>
<int:channel id="update-sp-channel"/>
<int:channel id="operation-completion-channel"/>
<int-jdbc:stored-proc-outbound-gateway
id="01-update-data-contents-sp-gateway"
request-channel="update-sp-channel"
reply-channel="operation-completion-channel"
data-source="dataSource"
stored-procedure-name="usp_UpdateDataContents" >
<int-jdbc:sql-parameter-definition name="@vKeyValue"
direction="IN"
type="VARCHAR"
scale="100"/>
<int-jdbc:sql-parameter-definition name="@nSeqNum"
direction="IN"
type="NUMERIC"
scale="20"/>
<int-jdbc:sql-parameter-definition name="@vMessageLog"
direction="IN"
type="VARCHAR"
scale="100"/>
<int-jdbc:sql-parameter-definition name="@vRC"
direction="OUT"
type="VARCHAR"
scale="30"/>
<int-jdbc:parameter name="@vKeyValue" value="#{updateDataContents.vKeyValue}"/>
<int-jdbc:parameter name="@nSeqNum" value="#{updateDataContents.nSeqNum}"/>
<int-jdbc:parameter name="@vMessageLog" value="#{updateDataContents.vMessageLog}"/>
<int-jdbc:parameter name="@vRC" type="java.lang.String" value="new java.lang.String"/>
<int-jdbc:returning-resultset name="updateDataContents" row-mapper="org.companyname.connector.support.UpdateDataContentsMapper" />
</int-jdbc:stored-proc-outbound-gateway>
我发现很难确定我需要什么
<int-jdbc:parameter name="@vKeyValue" value="#{updateDataContents.vKeyValue}"/>
或
或
我知道如果我使用一个消息负载,这是有效的:
<int-jdbc:parameter name="@vKeyValue" expression="payload.getVKeyValue()"/>
如果任何人有一个链接,或者可以给我一些见解,我将不胜感激。我想我的语法是正确的。它必须与实际的集成组件或我缺少的东西
谢谢,
Dave我们需要在这里确定您的目标:如果需要,只需使用预定义值,或者在存储过程适配器每次接收到消息时计算它
value=“#{updateDataContents.getVKeyValue()}
是一个Bean定义表达式,在启动时只计算一次
在
中有一个表达式
可选属性,可以这样指定:
<int-jdbc:parameter name="@vKeyValue" expression="@updateDataContents.getVKeyValue()"/>
在本例中,将为每个存储过程执行计算
vKeyValue
。一如既往,谢谢您,Artem。这正是我想知道的。
<int-jdbc:parameter name="@vKeyValue" expression="payload.getVKeyValue()"/>
<int-jdbc:parameter name="@vKeyValue" expression="@updateDataContents.getVKeyValue()"/>