Spring将specifyRowCallbackHandler参数作为“将提取结果的对象,一次提取一行”。我看到processRow()每行调用一次,但是这些调用可以并发吗?

我正在使RowCallbackHandler保持状态,包括构建已处理对象的Collection并偶尔提交该Collection以进行进一步处理。我需要知道是否可以同时修改此Collection,或者我是否可以相信一次只发生一个processRow()

最佳答案

真的取决于您。如果您已看到源代码,则将提供的RowCallbackHandler包裹在RowCallbackHandlerResultSetExtractor适配器类中,然后再次包裹在QueryStatementCallback中(原文如此!)。

没关系,关键是:如果将相同的RowCallbackHandler实例传递给两个并发的query()执行,则Spring将在所有这些层中使用同一对象。但是,如果您为每个RowCallbackHandler执行创建新的query()实例,则是安全的。

关于java - Spring :具有RowCallbackHandler的JdbcTemplate.query()是否同时调用processRow()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6445051/

10-09 05:05