2017-10-12 148 views

回答

0

沒有適用於JDBC的Spring集成Java DSL。隨時就此事籌集JIRA

我們真的沒有選擇的解決辦法,除非從通用.handle() EIP-方法使用StoredProcOutboundGateway類:

@Bean 
public StoredProcExecutor storedProcExecutor() { 
    StoredProcExecutor storedProcExecutor = new StoredProcExecutor(this.dataSource); 
    storedProcExecutor.setStoredProcedureName("CREATE_USER_RETURN_ALL"); 
    storedProcExecutor.setIsFunction(true); 
    ... 
    return storedProcExecutor; 
} 

... 

    StoredProcOutboundGateway storedProcOutboundGateway = new StoredProcOutboundGateway(storedProcExecutor()); 
    storedProcOutboundGateway.setExpectSingleResult(true); 
    storedProcOutboundGateway.setRequiresReply(true); 

... 

.handle(storedProcOutboundGateway) 
+0

謝謝@Arthem,爲迅速反應,我們有一個示例代碼,所有的方面在Java代碼中的StoredProcOutboundGateway,而不是xml配置。我得到一個用例,其中存儲過程和參數的名稱將成爲消息頭的一部分,我期待利用SpEL。這可以通過java代碼(而不是XML)來完成。我們有任何參考或單元測試代碼嗎? – Sam

+0

好吧,是的......不幸的是沒有。但是,應該清楚的是,這裏的一切都取決於'StoredProcExecutor'。查看它的JavaDocs瞭解更多信息。如果你需要'setStoredProcedureNameExpression(Expression)',你應該看看'SpelExpressionParser':https://docs.spring.io/spring/docs/5.0.0.RELEASE/spring-framework-reference/core。 HTML#表達式。對於來自消息的參數,您應該使用'setProcedureParameters(List )'並使用它的'expression'。請在此問題上提出JIRA以將示例添加到文檔:https://jira.spring.io/browse/INT –

+0

感謝@Arthem,您的指導幫助。遵循您提供的文檔參考。現在我有了IntegrationFlow的jdbc組件,就像魅力一樣工作。 – Sam