spring mvcでセッション情報をフィールドインジェクションで自動的にセットする方法を教えて頂けないでしょうか。
例えば、userBeanという名称でセッションに保存した情報をServiceクラスのフィールドに自動セットを行う方法を探しています。
以下のコードで試しましたが、TestServiceクラスのuserBeanがnullになっており、参照できませんでした。
xml
1<dependency> 2 <groupId>cglib</groupId> 3 <artifactId>cglib</artifactId> 4 <version>3.2.9</version> 5</dependency>
Java
1import org.springframework.context.annotation.ScopedProxyMode; 2import org.springframework.stereotype.Component; 3import org.springframework.web.context.annotation.SessionScope; 4 5@Component 6@SessionScope(proxyMode = ScopedProxyMode.TARGET_CLASS) 7public class UserBean { 8 private String name; 9 private int age; 10 11 public String getName() { 12 return name; 13 } 14 public void setName(String name) { 15 this.name = name; 16 } 17 public int getAge() { 18 return age; 19 } 20 public void setAge(int age) { 21 this.age = age; 22 } 23}
Java
1import javax.servlet.http.HttpServletRequest; 2import javax.servlet.http.HttpSession; 3 4import org.springframework.beans.factory.annotation.Autowired; 5import org.springframework.stereotype.Controller; 6import org.springframework.web.bind.annotation.RequestMapping; 7 8@Controller 9public class WelcomeController { 10 @Autowired 11 HttpServletRequest request; 12 13 @RequestMapping("/") 14 public String home() { 15 UserBean userBean = new UserBean(); 16 userBean.setName("テストユーザ"); 17 userBean.setAge(50); 18 19 HttpSession session = request.getSession(true); 20 session.setAttribute("userBean", userBean); 21 22 new TestService().method(); 23 24 return "menu"; 25 } 26}
Java
1import org.springframework.beans.factory.annotation.Autowired; 2import org.springframework.stereotype.Service; 3 4@Service 5public class TestService { 6 @Autowired 7 private UserBean userBean; 8 9 public void method() { 10 System.out.println("TestService : " + userBean.getName()); 11 } 12 13 public void setUserBean(UserBean userBean) { 14 this.userBean = userBean; 15 } 16 17 public UserBean getUserBean() { 18 return this.userBean; 19 } 20}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/06 00:17
2018/11/06 14:02 編集
2018/11/06 14:25