- 结论:Controller是线程不安全的, 默认的controller是单列的; 因此所有的线程共享一个controller;可以通过设置controller的scope来改变,使得每个线程拥有自己的controller实例。
- 测试:
@RequestMapping(value = "/test")@RestController
public class TestController {
private TestDto dto = new TestDto();
@PutMapping(value = "/set") public void set() {
System.out.println("SET: " + Thread.currentThread().getName() + ", Num: " + dto.getNum());
dto.setNum(dto.getNum() + 1);
}
@GetMapping(value = "/get")
public Long get() {
System.out.println("GET: " + Thread.currentThread().getName() + ", Num: " + dto.getNum());
return dto.getNum();
}
}