【发布时间】:2018-02-12 11:43:02
【问题描述】:
我有一个控制器,例如EmployeeController,
findEmployeesByDepartment 和 findLevelOneEmployeesByDepartment 正在使用一个通用的私有方法 getDepartmentId,它返回 Long
如果两个请求或线程访问这个私有方法,是否有可能改变这两个方法调用的值。
一个简单的疑问
@Controller
@RequestMapping("/emp")
public class EmployeeController {
@RequestMapping("/emp/dept/")
public Employee findEmployeesByDepartment(Department department) {
Long id = getDepartmentId(department);
}
@RequestMapping("/emp/dept/")
public Employee findLevelOneEmployeesByDepartment(Department department {
Long id = getDepartmentId(department);
}
// private method
private Long getDepartmentId(Department department) {
...
return id;
}
}
【问题讨论】:
-
首先,请求映射 url 应该不同,不应该相同。之后您的疑问答案是“否”,因为仅基于您的 Department 对象才会针对特定请求对象发生更改。跨度>
-
如果同时访问 findEmployeesByDepartment 和 findLevelOneEmployeesByDepartment 呢?
-
两个请求都会得到相同的响应,因为您似乎正在获取数据。
-
那么这是一种错误的做法,基本上,不同的Department对象作为参数发送,期望不同的id对吧?
标签: spring multithreading thread-safety