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

質問編集履歴

3

解決策?を追加

2017/02/17 08:03

投稿

msss
msss

スコア33

title CHANGED
File without changes
body CHANGED
@@ -37,4 +37,47 @@
37
37
  System.out.println(s);
38
38
  }
39
39
  }
40
+ ```
41
+
42
+ ## 追加(解決策?)
43
+
44
+ - new()した方が良いような気もしますがコンテナに登録されたオブジェクトにコンストラクタに引数が渡せました。
45
+
46
+ ```java
47
+ @Controller
48
+ public class HogeController {
49
+ void test(){
50
+ AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Test.class);
51
+ TestDI hogeA = (TestDI) context.getBean("getHogeInstance", 1, "@@@");
52
+ TestDI hogeB = (TestDI) context.getBean("getHogeInstance", 2, "◆◆");
53
+
54
+ hogeA.print();
55
+ hogeB.print();
56
+ }
57
+ }
58
+
59
+ @Service
60
+ public class Test {
61
+ @Bean
62
+ @Scope("prototype")
63
+ HogeService getHogeInstance(int i, String s) {
64
+ return new HogeService (i, s);
65
+ }
66
+ }
67
+
68
+ public class HogeService {
69
+ final int a;
70
+ final String b;
71
+
72
+ HogeService (int a, Sting b){
73
+ this.a = a;
74
+ this.b = b;
75
+ }
76
+
77
+ public void print(){
78
+ System.out.println(i);
79
+ System.out.println(s);
80
+ }
81
+ }
82
+
40
83
  ```

2

print\(\)追加

2017/02/17 08:03

投稿

msss
msss

スコア33

title CHANGED
File without changes
body CHANGED
@@ -16,15 +16,25 @@
16
16
  String s = "test";
17
17
 
18
18
  // 本当は以下のようなことがしたいのですが、どのようにすれば良いのでしょうか。
19
- HogeService service = new HogeService(i, s);
19
+ HogeService service = new HogeService(i, s);
20
20
 
21
-
21
+ service.print();
22
22
  }
23
23
  }
24
24
 
25
25
  @Service
26
26
  public class HogeService {
27
+ final int a;
28
+ final String b;
29
+
27
30
  HogeService (int a, Sting b){
31
+ this.a = a;
32
+ this.b = b;
28
33
  }
34
+
35
+ public void print(){
36
+ System.out.println(i);
37
+ System.out.println(s);
38
+ }
29
39
  }
30
40
  ```

1

a

2017/02/17 04:50

投稿

msss
msss

スコア33

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- コンストラクタに引数が必要なクラスをDIする場合
1
+ コンストラクタに引数(処理中に値決定する)が必要なクラスをDIする場合
2
2
  どのように実装したらよいのでしょうか。
3
3
 
4
4
  1.基本的にシングルトンなので動的な引数でインスタンス化は出来ないのでしょうか。