MVC 구조 완전 쉽게 + @ResponseBody까지
2025. 8. 5. 10:53ㆍSpring
🐢 MVC?
Model, View, Controller의 약자
역할 분리해서 개발 효율성과 유지보수성 높이는 패턴
안 그러면 코드 스파게티 대환장 파티
🐢 역할분담
- Model: 데이터랑 비즈니스 로직 담당 → 똑똑한 거북이 🐢💻
- Controller: 요청 받고 Model 불러서 View에 넘김 → 중간 전달 거북이 🐢📨
- View: 화면 그리기만 함 → 예쁜 거북이 🐢🎨
🔥 정리
Model/Controller는 서버 뇌근육, View는 디자인 담당임
🐢 MVC동작 흐름
1.브라우저에서 URL 요청함
2. 내장 톰캣 서버가 받음 → 스프링 컨트롤러 호출
3. 컨트롤러가 name: spring 데이터 세팅하고 hello-template 리턴함
4. ViewResolver가 templates/hello-template.html 찾음
5. Thymeleaf가 name 값 넣어서 HTML 생성함
6. 완성된 HTML 브라우저로 전달 → 거북이 배달 완료

🐢 @ResponseBody없을 때?
- 컨트롤러가 문자열 리턴하면 -> 뷰 이름으로 착각하고 템플릿 찾아감
- "hello"리턴하면 hello.html 찾아감
🐢 @ResponseBody붙으면?
- "야 이거 뷰 아니고 그냥 데이터임!"
- HTTP 응답 BODY에 그대고 본냄
- 그래서 브라우저가 HTML 렌더링 안하고 그대로 텍스트 JSON 형식으로 보여줌
🐢 객체를 던지면?
- return new Hello("Spring"); 이런식으로 객체 리턴하면?
- "문자 아니네ㄸ ㄸ" 스프링이 당황하지 않고 HttpMessageConver호출
🐢 HttpMessageConverter
- 스프링 내부에 "변환 알바생" 있음
- 기본 문자처리 : StringHttpMessageConverter
- 기본 객체처리 : MappingJackson2HrrpMessageConverter(JSON 변환)
🔥 정리
문자열이면 ? 그냥 문자열 그대로 던짐.
객체면? JSON으로 변환해서 던짐.
스프링이 문자/JSON 구분해서 자동 변환해줌.
MVC는 "역할 분리 거북이 3총사"임 🐢🐢🐢
@ResponseBody는 "뷰 안 거치고 데이터 직배송 거북이(근데 그대로 던지는)"임 🐢🚀
'Spring' 카테고리의 다른 글
| 스프링 빈 등록 & 의존관계 자동 설정 (1) | 2025.08.05 |
|---|---|
| 회원관리 예제로 배우는 스프링 기본기(테스트 코드, Optional, 람다 등등) (4) | 2025.08.05 |
| 스프링 부트 프로젝트 생성부터 실행까지 (Gradle vs Maven, 설정, 라이브러리 구조 완벽 정리!) (2) | 2025.08.04 |