質問詳細
Spring Bootの @Autowired でDIされるインスタンスはシングルトンであるとの認識ですが、それが時間がかかる処理を行っているとき、インスタンスはシングルトンを維持できているのでしょうか。
またそうでない場合は実際にメモリ上でインスタンスはどのような挙動になっているのでしょうか。
コード例
Java
1@RestController 2@RequestMapping("api") 3public class TestController { 4 5 @Autowired 6 TestService testService; 7 8 @RequestMapping(value = "", method = RequestMethod.GET) 9 public Map<String, Object> test() { 10 11 val resultMap = new HashMap<String, Object>(); 12 13 // 下記処理を実行するのに時間がかかる 14 // 処理が終わらないうちに次のリクエストがとんでくる想定 15 val result = testService.omoi(); 16 17 resultMap.put("result",result); 18 return resultMap; 19 20 } 21 22}
試したこと
DIしたserviceのメソッドでThread.sleep(10000)を行っている最中に新規リクエストを実行したところ、
新規リクエストにおいても遅延なくDIしたserviceのメソッドが呼び出された。
疑問点
シングルトンのインスタンスが処理中なのに、なぜ新規リクエストの同インスタンスを用いた処理が待ちにならないのか分からない。
回答1件
あなたの回答
tips
プレビュー