[英]Spring: Does JdbcTemplate.query() with a RowCallbackHandler make concurrent calls to processRow()?
Spring文檔將RowCallbackHandler
參數指定為“一次提取結果的對象,一次提取一行”。 我看到processRow()
每行被調用一次,但是這些調用可以並發嗎?
我正在讓RowCallbackHandler
保持狀態,包括建立已處理對象的Collection
,並偶爾提交該Collection以進行進一步處理。 我需要知道是否可以同時修改此Collection
,或者我是否可以相信一次僅發生一個processRow()
。
真的取決於您。 如果您已看到源代碼, RowCallbackHandler
您提供的RowCallbackHandler
包裝在RowCallbackHandlerResultSetExtractor
適配器類中,然后再次包裝在QueryStatementCallback
(原文如此!)。
沒關系,關鍵是:如果將相同的RowCallbackHandler
實例傳遞給兩個並發的query()
執行,則Spring將在所有這些層中使用相同的對象。 但是,如果您在每次執行query()
都創建RowCallbackHandler
新實例,那是安全的。
如果我理解您的問題,則一次只顯示1行。 示例代碼來自其結果集提取器,后者調用此接口。
while (rs.next()) {
this.rch.processRow(rs);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.