来自 Web Flow 示例预订应用程序:
<on-start>
<evaluate expression="bookingService.createBooking(hotelId, currentUser.name)" result="flowScope.booking" />
</on-start>
当我在流的视图状态中为 flowScope.booking 对象设置值时,这是如何同步的?内存可见性会不会有问题,因为每个访问 flowScope.booking 的请求都可能由不同的线程提供服务?
编辑:我不是在谈论试图修改同一个对象的多个并发请求。我说的是在流范围内使用相同对象的两个后续请求。
是否正确,这些请求中的每一个都可能由容器的不同线程提供服务?
如何确保,当第一个请求(由线程 A 处理)将预订的 checkoutDate 属性设置为某个值时,第二个请求(由线程 B 处理)可以读取预订对象的 checkoutDate 属性并实际获取由设置的值线程 A?
如果你不知道我在说什么,请看:https ://www.cs.umd.edu/users/pugh/java/memoryModel/jsr-133-faq.html
应该有一些同步机制。但我不知道,它是在 Spring 框架中的某个地方,还是应该由我来完成 - 使域对象的所有 getter 和 setter 同步?