Spring将specify和RowCallbackHandler
参数作为“将提取结果的对象,一次提取一行”。我看到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/