-
requestScope Bean주입oracle 2020. 9. 15. 17:27
requestScope 방식으로 빈을 주입한다고 해서 HttpServletRequest영역에 담기지는 않는다. 그래서 보통 HttpServletRequest나 Model을 주입받아 Request영역에 담아 JSP로 전달한다.
그런데 자동으로 Request영역에 저장되는 방법이 한가지 있다. xml방식으로 프로젝트 세팅을 하고
이런식으로 빈에 이름을(id) 줘서 빈을 저장한 후,
이름으로 빈을 주입받는다.( @Resource(name="저장된 빈(xml에서 id를 줘서 저장한 빈)"),
그리고 밑의 DataBean2 requestBean2 여기서 requestBean2는 현재 컨트롤러에서 이 변수로 사용하겠다고 지정한 것.
그 후 ,
bean에 데이터를 넣어준 후 , 모델이나 리퀘스트에 따로 넣어주지 않고 jsp페이지를 연결시켰다.
그 후, 결과를 보면
request영역에 따로 저장해주지 않았지만
이렇게 잘 저장된 것을 볼 수 있다.
그런데, 여기서 주의할 점이 컨트롤러에서 이름이 설정된(xml에서) 빈을 받을 때,
이런 식으로 컨트롤러에서 사용할 변수 이름을, xml에서 설정한 빈의 이름과 다르게 주게되면 request영역에 자동으로 저장이 안된다.
확인해보자. 먼저 컨트롤러에서 bean2에 데이터를 세팅해준다.
그리고 아까와 같이 jsp에서 el태그를 써본다.
결과.
이유는 아직 잘 모르겠다. 근데 어차피 리퀘스트 영역에 저장되는 게 xml방식에서 빈 지정할 때아이디 지정해주고, 컨트롤러에서 그 아이디랑 같은 변수 이름으로 세팅해주는 것만 리퀘스트 영역에 저장되기 때문에 (자바방식이나, xml방식에서도 타입으로 빈을 받는 거는 request영역에 자동으로 저장 안된다.) 속 편하게 아예 모델이나 request에 담아주는 것도 괜찮을 듯 하다.
++sessionScope와 applicationScope도 같은 증상
참조 : 인프런 - 윤재성의 만들면서 배우는 Spring MVC 5 - 21강 RequestScope 빈 주입
'oracle' 카테고리의 다른 글
Update (0) 2020.08.27 select (join부터) (0) 2020.08.13 select( join전까지) (0) 2020.08.12