๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ๏ธ DevLog/Devcourse

[DevCourse] ์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค 48 ~ 52์ผ์ฐจ

by hyebin (Helia) 2025. 6. 29.
๋ฐ˜์‘ํ˜•

์ด๋ฒˆ ์ฃผ๋Š” ์ง€๋‚œ์ฃผ์— ์ž‘์„ฑํ–ˆ๋˜ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ผผ๊ผผํžˆ ๋‹ค์‹œ ์‚ดํŽด๋ณด๋ฉด์„œ, ์ „์ฒด ํ๋ฆ„๊ณผ ๊ตฌ์กฐ๋ฅผ ๋‹ค์‹œ ์ •๋ฆฌํ•ด ๋ณด๋Š” ์‹œ๊ฐ„์ด์—ˆ๋‹ค.

๊ทธ๋™์•ˆ์€ 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๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœ์„ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹œ์ž‘ํ•  ์˜ˆ์ •์ธ๋ฐ, ์ด๋ฒˆ์— ๋ฐฐ์šด ๋‚ด์šฉ๋“ค์ด ํฐ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์•„ ๋”์šฑ ๊ธฐ๋Œ€๋œ๋‹ค. ๐Ÿ˜Š

๋ฐ˜์‘ํ˜•