我想知道Spring
请求是否已同步。这是我的情景:
我有一个请求被映射到一个Controller1,它本身调用我的DAO1.aMethod()
。
假设另一个用户调用相同的方法,并且在第一次调用DAO1.aMethod()
之前,Controller1将另一个请求映射到DAO1.aMethod()
。
我问这个,因为我有一个运行复杂算法计算的DAO,如果另一个用户的另一个调用可能会干扰计算,如果他再启动另一个计算,那就很好奇了。
我身边的测试表明,如果让我的DAO中的字段保持'iRunsCalculation'并跟踪实际状态,则第二个请求可以读取请求1设置的状态。
答案 0 :(得分:0)
我假设通过'synchronized',你的意思是,它们是同时运行还是排队。它们当然可以同时运行,这就是Web容器通常意味着如何工作。 Spring与这里发生的事情并没有多大关系,因为它将是你的servlet容器,它将传入的请求记录下来并将它们放到Spring DispatcherServlet
。
如果您的计算以某种方式依赖于此服务的当前和过去调用,则如果您未正确保护同步,则可能会遇到一些“同步”问题。