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

質問編集履歴

6

コードの書き方を修正

2018/11/06 14:09

投稿

tt2
tt2

スコア14

title CHANGED
File without changes
body CHANGED
@@ -72,7 +72,7 @@
72
72
  @Service
73
73
  public class TestService {
74
74
  @Autowired
75
- public UserBean userBean;
75
+ private UserBean userBean;
76
76
 
77
77
  public void method() {
78
78
  System.out.println("TestService : " + userBean.getName());

5

コードの書き方を修正

2018/11/06 14:09

投稿

tt2
tt2

スコア14

title CHANGED
File without changes
body CHANGED
@@ -66,6 +66,9 @@
66
66
  ```
67
67
 
68
68
  ```Java
69
+ import org.springframework.beans.factory.annotation.Autowired;
70
+ import org.springframework.stereotype.Service;
71
+
69
72
  @Service
70
73
  public class TestService {
71
74
  @Autowired

4

コードの書き方を修正

2018/11/06 14:08

投稿

tt2
tt2

スコア14

title CHANGED
File without changes
body CHANGED
@@ -2,6 +2,14 @@
2
2
  例えば、userBeanという名称でセッションに保存した情報をServiceクラスのフィールドに自動セットを行う方法を探しています。
3
3
  以下のコードで試しましたが、TestServiceクラスのuserBeanがnullになっており、参照できませんでした。
4
4
 
5
+ ```xml
6
+ <dependency>
7
+ <groupId>cglib</groupId>
8
+ <artifactId>cglib</artifactId>
9
+ <version>3.2.9</version>
10
+ </dependency>
11
+ ```
12
+
5
13
  ```Java
6
14
  import org.springframework.context.annotation.ScopedProxyMode;
7
15
  import org.springframework.stereotype.Component;

3

コードの書き方を修正

2018/11/06 13:59

投稿

tt2
tt2

スコア14

title CHANGED
File without changes
body CHANGED
@@ -1,22 +1,78 @@
1
1
  spring mvcでセッション情報をフィールドインジェクションで自動的にセットする方法を教えて頂けないでしょうか。
2
2
  例えば、userBeanという名称でセッションに保存した情報をServiceクラスのフィールドに自動セットを行う方法を探しています。
3
- 以下のように試してみたしたが、userBeanがnullになっており、参照できません。
3
+ 以下のコードで試ししたが、TestServiceクラスのuserBeanがnullになっており、参照できませんでした
4
4
 
5
- ```セッションにuserBeanを保存する処理
5
+ ```Java
6
+ import org.springframework.context.annotation.ScopedProxyMode;
6
- UserBean userBean = new UserBean();
7
+ import org.springframework.stereotype.Component;
7
- userBean.name = "テストユーザ";
8
+ import org.springframework.web.context.annotation.SessionScope;
8
- userBean.age = 50;
9
9
 
10
- HttpSession session = request.getSession(true);
10
+ @Component
11
- session.setAttribute("userBean", userBean);
11
+ @SessionScope(proxyMode = ScopedProxyMode.TARGET_CLASS)
12
+ public class UserBean {
13
+ private String name;
14
+ private int age;
15
+
16
+ public String getName() {
17
+ return name;
18
+ }
19
+ public void setName(String name) {
20
+ this.name = name;
21
+ }
22
+ public int getAge() {
23
+ return age;
24
+ }
25
+ public void setAge(int age) {
26
+ this.age = age;
27
+ }
28
+ }
12
29
  ```
13
30
 
31
+ ```Java
32
+ import javax.servlet.http.HttpServletRequest;
33
+ import javax.servlet.http.HttpSession;
34
+
35
+ import org.springframework.beans.factory.annotation.Autowired;
36
+ import org.springframework.stereotype.Controller;
37
+ import org.springframework.web.bind.annotation.RequestMapping;
38
+
39
+ @Controller
40
+ public class WelcomeController {
41
+ @Autowired
42
+ HttpServletRequest request;
43
+
44
+ @RequestMapping("/")
45
+ public String home() {
46
+ UserBean userBean = new UserBean();
47
+ userBean.setName("テストユーザ");
48
+ userBean.setAge(50);
49
+
50
+ HttpSession session = request.getSession(true);
51
+ session.setAttribute("userBean", userBean);
52
+
14
- ```TestService .java
53
+ new TestService().method();
54
+
55
+ return "menu";
56
+ }
57
+ }
58
+ ```
59
+
60
+ ```Java
15
- @Component
61
+ @Service
16
62
  public class TestService {
17
63
  @Autowired
18
- UserBean userBean;
64
+ public UserBean userBean;
65
+
19
- //・・・
66
+ public void method() {
67
+ System.out.println("TestService : " + userBean.getName());
68
+ }
69
+
20
- TesService内から、userBeanのnameやageの値を参照する処理を記述
70
+ public void setUserBean(UserBean userBean) {
71
+ this.userBean = userBean;
72
+ }
73
+
74
+ public UserBean getUserBean() {
75
+ return this.userBean;
76
+ }
21
77
  }
22
78
  ```

2

2018/11/06 13:35

投稿

tt2
tt2

スコア14

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  spring mvcでセッション情報をフィールドインジェクションで自動的にセットする方法を教えて頂けないでしょうか。
2
- 例えば、userBeanという名称でセッションに保存した情報をServiceクラスに自動セットを行う方法を探しています。
2
+ 例えば、userBeanという名称でセッションに保存した情報をServiceクラスのフィールドに自動セットを行う方法を探しています。
3
+ 以下のように試してみたしたが、userBeanがnullになっており、参照できません。
3
4
 
4
-
5
5
  ```セッションにuserBeanを保存する処理
6
6
  UserBean userBean = new UserBean();
7
7
  userBean.name = "テストユーザ";

1

2018/11/05 23:44

投稿

tt2
tt2

スコア14

title CHANGED
File without changes
body CHANGED
@@ -17,6 +17,6 @@
17
17
  @Autowired
18
18
  UserBean userBean;
19
19
  //・・・
20
- TesController内から、userBeanのnameやageの値を参照する処理を記述
20
+ TesService内から、userBeanのnameやageの値を参照する処理を記述
21
21
  }
22
22
  ```