teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

質問を修正

2019/06/12 06:38

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- @AutowiredでDIされるインスタンスは、それ処理中の場合DI利用す処理は待ちになります
1
+ 【Spring】@AutowiredでDIされるインスタンスが複数リクエストに対応する際インスタンスはシングルトン維持できているのでしょう
body CHANGED
@@ -1,6 +1,7 @@
1
- ### 前提・実現したいこと
1
+ ### 質問詳細
2
2
 
3
- Spring Bootの @Autowired でDIされるインスタンスはシングルトンであるとの認識ですが、それが時間がかかる処理を行っているとき、DIでそのインスタンスを利用すスレッド等は待ち状態になるのでしょうか。
3
+ Spring Bootの @Autowired でDIされるインスタンスはシングルトンであるとの認識ですが、それが時間がかかる処理を行っているとき、インスタンスはシングルトン維持できているのでしょうか。
4
+ またそうでない場合は実際にメモリ上でインスタンスはどのような挙動になっているのでしょうか。
4
5
 
5
6
  ### コード例
6
7
 

4

試したこと、疑問点追記

2019/06/12 06:38

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -28,4 +28,12 @@
28
28
  }
29
29
 
30
30
  }
31
- ```
31
+ ```
32
+
33
+ ### 試したこと
34
+
35
+ DIしたserviceのメソッドでThread.sleep(10000)を行っている最中に新規リクエストを実行したところ、
36
+ 新規リクエストにおいても遅延なくDIしたserviceのメソッドが呼び出された。
37
+
38
+ #### 疑問点
39
+ シングルトンのインスタンスが処理中なのに、なぜ新規リクエストの同インスタンスを用いた処理が待ちにならないのか分からない。

3

タグ追記

2019/06/12 06:15

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
File without changes

2

アノテーション追記

2019/06/12 05:41

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -6,6 +6,7 @@
6
6
 
7
7
 
8
8
  ```Java
9
+ @RestController
9
10
  @RequestMapping("api")
10
11
  public class TestController {
11
12
 

1

コードを追記

2019/06/12 05:39

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,30 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- Spring Bootの @Autowired でDIされるインスタンスはシングルトンであるとの認識ですが、それが時間がかかる処理を行っているとき、DIでそのインスタンスを利用する他のスレッド等は待ち状態になるのでしょうか。
3
+ Spring Bootの @Autowired でDIされるインスタンスはシングルトンであるとの認識ですが、それが時間がかかる処理を行っているとき、DIでそのインスタンスを利用する他のスレッド等は待ち状態になるのでしょうか。
4
+
5
+ ### コード例
6
+
7
+
8
+ ```Java
9
+ @RequestMapping("api")
10
+ public class TestController {
11
+
12
+ @Autowired
13
+ TestService testService;
14
+
15
+ @RequestMapping(value = "", method = RequestMethod.GET)
16
+ public Map<String, Object> test() {
17
+
18
+ val resultMap = new HashMap<String, Object>();
19
+
20
+ // 下記処理を実行するのに時間がかかる
21
+ // 処理が終わらないうちに次のリクエストがとんでくる想定
22
+ val result = testService.omoi();
23
+
24
+ resultMap.put("result",result);
25
+ return resultMap;
26
+
27
+ }
28
+
29
+ }
30
+ ```