- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个名为Assignment的DAO,它使用@Document映射和mongo集合名称Assignment进行声明。
然后我有一个服务 bean,例如 AssigmentImpl,它位于单例范围内,执行更新操作,获取持久的 DAO 并使用分配的 REST 输入数据更新一些内容。
@Service
public class AssignmentImpl{
public Assignment updateAssignment(Assignment assignment){
Assignment assignmentExsisting = assignmentRepo.getAssignment(assignment.getId());
BeanUtils.copyProperties(assignment,assignmentExsisting);
assignmentRepo.save(assignmentExsisting);
}
}
假设多个线程(用户)对不同的分配执行更新操作。
由于AssignmentService是单例的,它会将相同的副本返回给不同的用户。它如何引用Assignment对象?如果我说,由于Assignment对象不是单例,所以当每个用户进行更新操作时,它会返回不同的对象引用给AssignmentImpl,是吗?
在这种情况下,用户 A 可能会在执行更新操作之前获取分配 id 123,并且当用户 B 开始执行更新操作时,AssignmentImpl 会将分配引用更改为不同的分配 id 456。在这种情况下,用户 A 将更新完全不同的分配。这可能吗?如果是的话我们该如何预防呢?使更新操作同步或者还有其他好的解决方案吗?
最佳答案
不,这不会是你想的那样,请注意,即使服务类是单一的,每次更新调用也不会与任何其他方法调用的执行重叠,因为两者都将在服务器创建的不同线程中执行。因此,操作将按照给定的分配进行,并且两个用户的结果不会互换,为什么?因为每个线程独立执行方法,但是当两个线程尝试修改状态时就会出现问题共享元素的值,即更改服务方法中在类级别声明的对象的值。
例如,两辆公共(public)汽车从 A 点出发到 B 点。现在,没有一辆公共(public)汽车有共享乘客(这不可能吧?),两者都有自己的乘客和自己的燃料,但是机制(存储库和服务) )对于两辆巴士保持不变。
据我所知,您看到两个线程在这里没有共享任何内容,是的,它使用存储库 bean,但它不会修改它的状态,它只会将分配发送到存储并发送 id 来检索分配。
关于java - Spring中实例DAI与Singleton Bean的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52196702/
虽然我已经成功地使用 Compound 的交换接口(interface)类型转换测试 Dai,但在使用 Ganache 和我的本地机器时我遇到了一些问题。尝试类型转换时,我有以下脚本(也是从教程 he
也许有人可以帮助我。我正在使用数据访问对象。我有一个数据库:表接收器z num name 1 Walmart 2 Target 3 McDonalds 我已经为此表创建了一
我想确认 DAI 遵循类似的结构来处理它在训练中没有遇到的分类变量,如这个答案 h2o DRF unseen categorical values handling .我无法在 H2O Driverl
我是一名优秀的程序员,十分优秀!