์ด๋ฒ ์ฃผ๋ ์ง๋์ฃผ์ ์์ฑํ๋ ์ฝ๋๋ฅผ ํ๋ํ๋ ๊ผผ๊ผผํ ๋ค์ ์ดํด๋ณด๋ฉด์, ์ ์ฒด ํ๋ฆ๊ณผ ๊ตฌ์กฐ๋ฅผ ๋ค์ ์ ๋ฆฌํด ๋ณด๋ ์๊ฐ์ด์๋ค.
๊ทธ๋์์ Spring Boot ๊ธฐ๋ฐ์ ์๋ํ๋ ํ๊ฒฝ์ ์ต์ํด ์์๋๋ฐ, ์ด๋ฒ์๋ ์์ Spring๋ง์ ์ฌ์ฉํด์ ํ๋ก์ ํธ๋ฅผ ์ธํ ํ๊ณ ๊ตฌ์ฑํด ๋ณด๋ ์ฒซ ๊ฒฝํ์ด์๋ค.
์ฒ์์๋ ๋ค์ ๋ณต์กํ๊ณ ๋ฏ์ค๊ฒ ๋๊ปด์ก์ง๋ง, DispatcherServlet์ ์ง์ ์ค์ ํ๊ณ , ViewResolver, Tiles, JDBC ๋ฑ ๊ฐ ์ค์ ์ ๋ช ์์ ์ผ๋ก ์ ์ํด ๋ณด๋ฉด์
Spring์ ๋ด๋ถ ๊ตฌ์กฐ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ ๋ช ํํ๊ฒ ์ดํดํ ์ ์์๋ค.
์๋ ์ค์ ์ด ์๋ ๋งํผ, ํ๋ํ๋ ์ง์ ๊ตฌ์ฑํด ๋ณด๋ฉฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ ์ธ ๋์ ์๋ฆฌ๋ฅผ ์ค์ต์ ํตํด ์ฒด๋ํ ์ ์์๋ ์๊ฐ์ด์๋ค.
๐ ์ด๋ฒ ์ฃผ ๋ฐฐ์ด ๋ด์ฉ ์ ๋ฆฌ
๐ท Spring WebMVC ๊ตฌ์กฐ์ ํ๋ฆ ํ์
- DispatcherServlet ์ค์ฌ์ ์์ฒญ ํ๋ฆ(Dispatcher → HandlerMapping → Controller → Service/DAO → View)์ ์๋ ๋ฐฉ์ ์ดํด
- web.xml์ ํตํด DispatcherServlet ์ง์ ๋ฑ๋ก, servlet-context.xml์์ ViewResolver ๋ฐ ํธ๋ค๋ฌ ์ค์ ๊ตฌ์ฑ
- Controller๋ @RequestMapping์ผ๋ก URL์ ์ฒ๋ฆฌํ๊ณ , ModelAndView๋ฅผ ํตํด View์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์ ํ์ต
- JSTL๊ณผ Tiles๋ฅผ ํจ๊ป ์ฌ์ฉํด JSP ํ๋ฉด์ ๊ตฌ์ฑํ๊ณ ๋ฐ๋ณต๋๋ ๋ ์ด์์์ ํจ์จ์ ์ผ๋ก ๋ถ๋ฆฌ
๐ถ DB ์ฐ๋๊ณผ ๋น์ฆ๋์ค ๊ณ์ธต ๊ตฌ์ฑ
- JDBC + JdbcTemplate์ ๊ธฐ๋ฐ์ผ๋ก DAO → Service → Controller ํ๋ฆ ๊ตฌ์ฑ
- ์ค์ ํ์ผ์ ๋๋์ด (action-dataSource.xml, jdbc.properties) ์ธ๋ถ ์ค์ ์ ์ ์ฉํ๋ ๋ฐฉ์ ์ค์ต
- MyBatis์ JPA๋ ๋น๊ตํ๋ฉฐ ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ ํ์ ํ๊ณ , DAO ํด๋์ค๋ฅผ ์ง์ ์์ฑํด SQL์ ๋ถ๋ฆฌํ๊ณ ๋ก์ง์ ์ ๋ฆฌํ๋ ์ฐ์ต ์งํ
๐จ Tiles๋ฅผ ์ด์ฉํ ๋ ์ด์์ ๋ถ๋ฆฌ
- ๊ธฐ๋ณธ ๋ ์ด์์(layout.jsp)์ ๋ง๋ค๊ณ header, footer, side, body ์์ญ์ ๋ถ๋ฆฌํด ๊ด๋ฆฌ
- Tiles ์ค์ ํ์ผ(tiles.xml)์ ํตํด View ์ ์ ๋ฐ ํ์ฅ
- ํ๋ก์ ํธ๊ฐ ์ปค์ก์ ๋ ์ ์ง๋ณด์์ ์ผ๊ด๋ UI ๊ตฌ์ฑ์ ์ ๋ฆฌํ๋ค๋ ์ ์ฒด๊ฐ
๐ฉ ์ธ์ , ๋ก๊ทธ์ธ ์ฒ๋ฆฌ ๋ฐ ์ธํฐ์ ํฐ ๊ตฌํ
- HttpSession์ ์ด์ฉํ ๋ก๊ทธ์ธ ์ํ ๊ด๋ฆฌ์ @SessionAttribute ์ฌ์ฉ๋ฒ ํ์ต
- Spring Interceptor๋ฅผ ํตํด ๋ก๊ทธ์ธ ์ฒดํฌ๋ฅผ ๊ตฌํํ๊ณ , ํน์ URL์ ๋ํด ์ ๊ทผ ์ ํ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ ์ค์ต
๐ฅ ํธ๋์ญ์ ๊ณผ AOP ์ฒ๋ฆฌ
- @Transactional ์ด๋ ธํ ์ด์ ๊ณผ tx:advice, aop:advisor๋ฅผ ์ด์ฉํด ์๋น์ค ๊ณ์ธต์์ ํธ๋์ญ์ ์ ์ฉ
- ์์ธ ๋ฐ์ ์ ์๋์ผ๋ก ๋กค๋ฐฑ๋๋ ํ๋ฆ์ ํ ์คํธํ๋ฉด์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ ํ๋ณด์ ๋ํด ์ดํด
๐งก ๋๋ ์
์ด๋ฒ ์ฃผ๋ Spring Boot ์์ด, ์์ํ Spring Framework๋ง์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒ์๋ถํฐ ์ง์ ๊ตฌ์ฑํด ๋ณธ ์๊ฐ์ด์๋ค.
๊ทธ๋์์ Spring Boot๊ฐ ๋๋ถ๋ถ์ ์ค์ ์ ์๋์ผ๋ก ์ฒ๋ฆฌํด ์ค์ ๋ด๋ถ ๊ตฌ์กฐ์ ๋ํด ๊น์ด ๊ณ ๋ฏผํ ๊ธฐํ๊ฐ ๋ง์ง ์์๋๋ฐ,
์ด๋ฒ ์ค์ต์ ํตํด Spring์ด ์ค์ ๋ก ์ด๋ป๊ฒ ์๋ํ๋์ง, ๊ทธ ๋์ ํ๋ฆ์ ํจ์ฌ ๋ ๊น์ด ์ดํดํ ์ ์์๋ค.
ํนํ DispatcherServlet์ด ๋ชจ๋ ์์ฒญ์ ๋ฐ์ ์ฒ๋ฆฌ ํ๋ฆ์ ์ ์ดํ๊ณ , ViewResolver๊ฐ JSP๋ฅผ ์ฐพ์์ฃผ๋ ๊ตฌ์กฐ๋ฅผ ์ง์ ์ค์ ํด ๋ณด๋ฉด์,,
๋จ์ํ ๊ธฐ๋ฅ๋ง ๊ตฌํํ๋ ๊ฒ์ด ์๋๋ผ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ๊ณ ๊ตฌ์ฑํ๋ ๊ด์ ์ ์ค์์ฑ์ ์ค๊ฐํ ์ ์์๋ค.
๋ํ Tiles๋ฅผ ํ์ฉํด UI ๋ ์ด์์์ ๋ถ๋ฆฌํ๊ณ , Session๊ณผ Interceptor๋ฅผ ํตํด ์ธ์ฆ ํ๋ฆ์ ๊ตฌํํ๋ฉด์ ์ค๋ฌด์์ ์ ์ด๋ฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋์ง, ๊ทธ ์ด์ ๋ฅผ ์ค์ค๋ก ๋ฉ๋ํ ์ ์์๋ ๊ฒ๋ ํฐ ๋ฐฐ์์ด์๋ค.
์์ง Spring์ ๋ฐฐ์ธ ๊ฒ์ด ๋๋ฌด ๋ง๊ณ ๋ฐฉ๋ํ ํ๋ ์์ํฌ์ง๋ง, ์ด๋ฒ ์ฃผ๋ฅผ ํตํด ํ์ธต ์ต์ํด์ก๊ณ , Spring์ ๋ํ ์ดํด์ ํญ์ด ์กฐ๊ธ์ ๋์ด์ก๋ค๋ ์ค๊ฐ์ด ๋ ๋ค.
๋ค์ ์ฃผ์๋ Spring Boot์ JPA๋ฅผ ํ์ฉํ ๊ฐ๋ฐ์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํ ์์ ์ธ๋ฐ, ์ด๋ฒ์ ๋ฐฐ์ด ๋ด์ฉ๋ค์ด ํฐ ๋์์ด ๋ ๊ฒ ๊ฐ์ ๋์ฑ ๊ธฐ๋๋๋ค. ๐