인프런 커뮤니티 질문&답변

초보님의 프로필 이미지
초보

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

단순하고 실용적인 컨트롤러 - v4

V4 viewName문자열반환하면 모델반환은 어떻게 되나요?

작성

·

194

2

안녕하세요 선생님^^
v3, v5는 모두 ModelView를 반환해서 돌아오지만, v4는 view이름만반환하는데도
함수가종료될때 스택에있 모델 데이터가 소멸되지않고 반환되는게 이상해서? 질문남깁니다
ReturnValueHandler와 관련이 있는건가요?

답변 1

16

안녕하세요. 초보님, 공식 서포터즈 David입니다.

.
Map<String, Object> model = new HashMap<>();

String viewName = controller.process(param, model);

model 이라는 이름을 가진 객체가 생성되었습니다.

process 메서드 파라미터로 model이 넘어갔습니다.

정확하게는 model 객체의 참조값이 넘어갑니다.

즉, process 메서드로 전달된 model과 process 메서드 내 model은 같은 객체를 가리키고 있습니다.

따라서 process 메서드 내에서 model.put("member", member);를 명령하게 되면

process 메서드로 전달하기 전 model에게 mode.put("member", member); 명령을 내리는 것과 동일한 것입니다.

그렇기 때문에 process 메서드가 종료되어도 model 객체는 내부에 member에 대한 정보를 가지고 있게 되는 것입니다.

.
감사합니다.

초보님의 프로필 이미지
초보

작성한 질문수

질문하기