Whiteship's Note

Spring 컨트롤러와 request scope bean

모하니?/Coding : 2008.04.16 19:07


스프링 컨트롤러와 request scope관한 이메일이 왔습니다.

...

제가 느끼고 있는 궁금증은 Controller 사용시 bean scope에 관한 부분입니다.

몇번의 프로젝트에서  SpringMVC를 이용하여 프로젝트를 했었는데요.
하나의 Controller에서 요청을 처리를 하기 위해 MultiActionController를 사용했습니다.
 
BaseController를 정의해서 BaseController가 MultiActionController를 상속받도록 만들었고,
모든 Controller는 BaseController를 상속 받아 쓰는 형식으로 구조를 잡았습니다.
 
BaseController에는 handleRequestInternal() 메소드를 오버라이드 해서 모든 request 값을
파싱하여 Map에 담도록 해놓았구요. (map에서 값을 꺼내 요청을 처리하도록 말이죠.)
 
테스트를 위해 Controller 내에서 sleep() 을 준 뒤, 몇개의 요청을 날려보면
가장 나중에 요청된 정보로 앞의 정보들이 변경되더군요.
아마도 scope이 singleton이라 그런것 같더군요.
그래서 빈 설정시에 Controller에 대한 scope을 모두 request로 바꿔줬습니다.
 
<bean id="memberController" class="MemberController" scope="request">
 
이렇게 바꾸어주니 이전과 같은 현상은 발생하지 않더군요.

과연 이렇게 하는 것이 맞는 것인지, 아니면 BaseController를 scope="request"로 만들면 그걸
상속받는 다른 빈도 request가 되는 것인지 정확한 판단이 서질 않더군요.

제가 알기로는 Spring에서 Controller 이용시 threadsafe 한 설계는 개발자의 몫이라고 들었습니다.
어디를 봐도 정확한 가이드가 나와있지 않아서 혼자 헤매다 이렇게 메일을 드리게 되었습니다.

...

그리고 다음과 같이 답변해드렸습니다.

more..


request scope 빈을 써본지가 까마득한데 이런 경우에 유용하게 쓸 수 있겠네요. 내용 공유를 허락해주셔서 감사합니다.
top




: 1 : ··· : 201 : 202 : 203 : 204 : 205 : 206 : 207 : 208 : 209 : ··· : 299 :





티스토리 툴바