์๋ก์ด ๋ด์ฉ์ ๊ณต๋ถํ ๋
์๋ก์ด ๋ด์ฉ์ ๊ณต๋ถ๋ฅผ ์์ํ ๋ ์ฉ์ด์ ์ ์๋ฅผ ์ดํดํ์ง ๋ชปํ๊ฑฐ๋ ์ ํํ๊ฒ ์์ง ๋ชปํ๋ค๋ฉด ๊ทธ ์ฉ์ด๊ฐ ํฌํจ๋ ๋ฌธ์ฅ์ ์ดํดํ์ง ๋ชปํฉ๋๋ค.
์์ ๋จ์ด ํ๋๊ฐ ๋ด์ฉ์ ์ดํดํ์ง ๋ชปํ๊ฒ ํ๊ธฐ ๋๋ฌธ์ ์ฉ์ด๋ฅผ ์ ํํ๊ฒ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
2025-02-22 TIL
๐ 2025-02-22 TIL
1. ์ค๋์ ํ์ต ์ฃผ์
viewResolver์ ๊ฐ๋ ์ ์์๋ณด์
2. ์ค๋์ ํ์ต์ ๋ฆฌ
๋ทฐ ๋ฆฌ์กธ๋ฒ๋
- ๋ทฐ ๋ฆฌ์กธ๋ฒ๋ ์คํ๋ง mvc์์ ๋ทฐ ์ด๋ฆ์ ๋ทฐ ๊ฐ์ฒด๋ก ๋งคํํด์ฃผ๋ ์ญํ ์ ํ๋ ๋ทฐ ๋ ๋๋ง ๋น์ ๋๋ค.
- ์ฌ์ฉ์๊ฐ URL ์์ฒญ์ ๋ณด๋ด๋ฉด, ์ปจํธ๋กค๋ฌ๋ ๋ทฐ ์ด๋ฆ๋ง ๋ฐํํ๊ณ , ๋ทฐ ๋ฆฌ์กธ๋ฒ๋ ํด๋น ์ด๋ฆ์ ๋ง๋ ๊ฒฝ๋ก์ ํ์ฅ์๋ฅผ ๋ถ์ฌ ์ค์ ๋ทฐ๋ฅผ ๋ ๋๋งํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ๋ ๋ทฐ์ ๊ฒฝ๋ก ๋ฐ ๊ตฌํ ๊ธฐ์ ์ ์์กดํ์ง ์๊ฒ ๋๋ฉฐ, ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ค๊ณ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ทฐ์ ๊ฒฝ๋ก โuser/static/intex.htmlโ ๋ ํด๋์ค์ ๊ฒฝ๋ก๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ชจ๋ ์๊ณ ์์ผ๋ฉด ๊ฐํ ๊ฒฐํฉ์ด ๋ฐ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ทฐ ๋ฆฌ์กธ๋ฒ๋ฅผ ์ฌ์ฉํ ๊น?
์์กด์ฑ์ ๋ถ๋ฆฌ์ ์ ์ง๋ณด์ฑ
- ๋ทฐ ๋ฆฌ์กธ๋ฒ๋ ์ปจํธ๋กค๋ฌ์ ๋ทฐ์ ๊ฐํ ๊ฒฐํฉ์ ๋ฐฉ์งํ๊ณ ๋์จํ ๊ฒฐํฉ์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ปจํธ๋กค๋ฌ๋ ๋ทฐ์ ๊ฒฝ๋ก๋ ํ์ฅ์๋ฅผ ์ ํ์๊ฐ ์์ต๋๋ค.
- ์ด๋ ์ค์ ํ์ผ์ด๋ ๋น ์ค์ ์ ๋ทฐ์ ์ด๋ฆ์ผ๋ก ๋ทฐ๋ฅผ ๊ต์ฒดํ ์ ์์ด ์ ์ง๋ณด์์ฑ์ด ๋์์ง๋ค.
- Spring์ ioc/di ์ฒ ํ์ ๋ฐ๋ผ, ๋ทฐ์ ์์ฑ๊ณผ ๊ด๋ฆฌ๋ ์ปจํธ๋กค๋ฌ(์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ)๊ฐ ์๋๋ผ ์คํธ๋ง ์ปจํ ์ด๋๊ฐ ๋ด๋นํ๋ค.
๋์์๋ฆฌ
-
์ปจํธ๋กค๋ฌ๊ฐ์ ๋ทฐ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค. `return โindexโ;
-
๋ทฐ ๋ฆฌ์กธ๋ฒ๊ฐ ์ด๋ฆ์ ํด์ํฉ๋๋ค.
์ด๋ ๋ทฐ ๋ฆฌ์กธ๋ฒ ํ๋ณด๋ฆฌ์คํธ์์
resolveName
๋ฅผ ํธ์ถํ์ฌ ์ง์ํ๋ ๋ทฐ ๋ฆฌ์กธ๋ฒ๋ฅผ ์กฐํํฉ๋๋ค -
์ค์ ๋ทฐ ๋ ๋ฉ: ์์ฑ๋ ๊ฒฝ๋ก๋ฅผ ํตํด ๋ทฐ ๊ฐ์ฒด๋ฅผ ๋ ๋๋ง.
๊ตฌํ์ฒด
InternalResourceViewResolver
- jsp์ ๊ฐ์ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ๋ทฐ์ ์ฌ์ฉํ๋ค.
- redirect:, forward: ๊ฐ ๋ถ์ ๊ฒฝ์ฐ ๋์ํ๋ค.
ThymeleafViewResolver
- ํ์๋ฆฌํ ํ ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ๋ ๋ทฐ ๋ ๋์ผ์ ๋๋ค.
- ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง์ ํฌํจ๋๋ฉฐ, boot์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
JsonViewResolver
- RESTful API ๊ฐ๋ฐ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ฉฐ, JSON ์๋ต์ ๋ฐํ
- @ResponseBody์ ์ ์ฌํ์ง๋ง ๊ตฌ์ฒด์ ์ธ ๋ทฐ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์์.
๋ทฐ ๋ฆฌ์กธ๋ฒ ์ฌ์ฉ์ ์ฅ์
- ์ ์ง๋ณด์์ฑ: ๋ทฐ ์์ง ๊ต์ฒด ์ ์ปจํธ๋กค๋ฌ ์ฝ๋๋ฅผ ์์ ํ์ง ์์๋ ๋จ.
- ์ ์ฐํ ์ค๊ณ: ์ค์ ํ์ผ๋ง ์์ ํด์ ๋ทฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ์์กด์ฑ ๋ถ๋ฆฌ: ์ปจํธ๋กค๋ฌ๋ ๋ทฐ์ ์ธ๋ถ ๊ตฌํ์ ๋ชฐ๋ผ๋ ๋จ.
๋ทฐ ๋ฆฌ์กธ๋ฒ ์ฌ์ฉ์ ๋จ์
- ์ค์ ๋ณต์ก๋**: ์ฌ๋ฌ ๋ทฐ ๋ฆฌ์กธ๋ฒ๋ฅผ ์ฌ์ฉํ ๋ **์ฐ์ ์์ ๊ด๋ฆฌ๊ฐ ๋ณต์ก.
- ๋๋ฒ๊น ์ด๋ ค์: ๋ทฐ ๋งคํ์ด ์๋ชป๋ ๊ฒฝ์ฐ ๋๋ฒ๊น ์ด ๋ณต์กํด์ง ์ ์์
- JSON ์๋ต์ ํ๊ณ: ์ต๊ทผ ํธ๋ ๋์ธ SPA ํ๋ ์์ํฌ(Vue, React)์๋ JsonViewResolver๋ณด๋ค @ResponseBody๊ฐ ๋ ์์ฃผ ์ฌ์ฉ๋จ.
๋์๊ณผ์ ๋น๊ต
@ResponseBody ๋ฐ @RestController:
- ์ฅ์ : JSON ์๋ต์ ์ง์ ๋ฐํํ๋ฉฐ ๋ทฐ ๋ฆฌ์กธ๋ฒ๋ฅผ ์ฐํ.
- ๋จ์ : ์ปจํธ๋กค๋ฌ๊ฐ JSON ๊ตฌ์กฐ์ ์ง์ ์์กดํ๊ฒ ๋จ.
json ๊ตฌ์กฐ์ ์์กดํ๋ค๋ ์ด์ผ๊ธฐ
์๋ต ํฌ๋ฉง์ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด ์ปจํธ๋กค๋ฌ ์ฝ๋๋ฅผ ์ง์ ์์ ํด์ผํ๋ค.
ํ์ง๋ง view ๋ฆฌ์กธ๋ฒ๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฒญ ํค๋์ ๋ฐ๋ผ ๋ค์ํ ์๋ต ํฌ๋ฉง์ ์ง์ ํ ์ ์๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ