๐ŸŽซ Springboot ๋ฆฌํŒฉํ† ๋ง

์ด๋™๊ทผยท2025๋…„ 6์›” 11์ผ

Mini Project

๋ชฉ๋ก ๋ณด๊ธฐ
5/8
post-thumbnail

์ฝ”๋“œํ™•์ธ -> github ๋งํฌ


๐Ÿ”Ž ๋ฆฌํŒฉํ† ๋ง ํ”„๋กœ์ ํŠธ


๐Ÿฅฅ ์ฝ”๋“œ๊ฐœ์„ 

  • Early Return

    • ๋ถˆํ•„์š”ํ•œ ๋กœ์ง์„ ์‹คํ–‰์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ
  • ๋ถˆํ•„์š”ํ•œ if-else ํ”ผํ•˜๊ธฐ

  • ์ฝ”๋“œ ๊ฐœ์„  - Validation


๐Ÿšƒ N+1 ๋ฌธ์ œ

  • N+1 ๋ฌธ์ œ

    • ์ฆ‰์‹œ๋กœ๋”ฉ, ์ง€์—ฐ๋กœ๋”ฉ ์—์„œ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ ๋ฌธ์ œ

    • fetch join, @EntityGraph ์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ


๐Ÿฅก ํ…Œ์ŠคํŠธ์ฝ”๋“œ

  • ์˜ˆ์ƒํ•œ๋Œ€๋กœ ์„ฑ๊ณตํ•˜๋Š”์ง€ ํ™•์ธ

  • ์˜ˆ์ƒํ•œ๋Œ€๋กœ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š”์ง€ ํ™•์ธ


๐Ÿš€ API ๋กœ๊น…

  • Interceptor ๋˜๋Š” AOP ํ™œ์šฉ

    • 2๊ฐ€์ง€ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ
  • ex) ํŠน์ • API์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ์ ‘๊ทผ ๋กœ๊ทธ๋ฅผ ๊ธฐ๋ก


๐Ÿ Interceptor ์‚ฌ์šฉ

  • ์š”์ฒญ์ •๋ณด(HttpServletRequest)๋ฅผ ์‚ฌ์ „ ์ฒ˜๋ฆฌ

  • ๊ถŒํ•œ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์—ฌ ์ธ์ฆ๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž ์ ‘๊ทผ ์ฐจ๋‹จ

  • ์ธ์ฆ ์„ฑ๊ณต ์‹œ ์š”์ฒญ ์‹œ๊ฐ๊ณผ URL ๋กœ๊น… ๊ตฌํ˜„

  • ์ธ์ฆ ์—ฌ๋ถ€ ํ™•์ธ โ†’ ์ธ์ฆ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์˜ˆ์™ธ์ฒ˜๋ฆฌ


๐Ÿ…ฐ๏ธ AOP ์‚ฌ์šฉ

  • API ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์ „/ํ›„ ์š”์ฒญ/์‘๋‹ต ๋ฐ์ดํ„ฐ ๋กœ๊น…

  • ๋กœ๊น… ๋‚ด์šฉ

    • ์š”์ฒญ์ž ID

    • API ์š”์ฒญ ์ •๋ณด

    • ์š”์ฒญ/์‘๋‹ต ๋ณธ๋ฌธ ์ •๋ณด

  • @Around ์–ด๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋กœ๊น…

    • JSON ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ

    • ๋กœ๊น…์€ Logger ํด๋ž˜์Šค ํ™œ์šฉํ•˜์—ฌ ๊ธฐ๋ก


๐Ÿ’ซ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

  • N+1๋ฌธ์ œ

    • N+1 ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•™์Šต ๋ถ€์กฑ์œผ๋กœ fetch join, @EntityGraph ํ•™์Šต์„ ํ™•์‹คํ•˜๊ฒŒ ํ•˜์—ฌ ์ฝ”๋“œ ์ˆ˜์ •
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ

    • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๊ฐ•์˜, ์‹ค์Šต ํ›„ ์ˆ˜ํ–‰

    • NullPointerException์„ ์›ํ•˜๋Š” ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด
      DTO ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์˜ค๋Š” ์ฝ”๋“œ์—์„œ Null์„ ์˜ˆ์™ธ์ฒ˜๋ฆฌํ• ์ง€
      DTO ๊ฐ’์„ ๋”ฐ๋กœ ๊ฐ€์ง€๊ณ  Null์„ ์˜ˆ์™ธ์ฒ˜๋ฆฌํ• ์ง€ ๊ณ ๋ฏผ

      • ๋ณ„๋„๋กœ null์ผ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•˜์—ฌ ์˜ˆ์™ธ์ฒ˜๋ฆฌ
  • Interceptor

    • Interceptor ํ•™์Šต์ด ๋˜์–ด ์žˆ์ง€ ์•Š์•„ ๊ตฌ๊ธ€๋ง ๋ฐ AI์„ ์ด์šฉํ•˜์—ฌ ํ•™์Šต ํ›„ ์ฝ”๋“œ ์ž‘์„ฑ
  • AOP

    • Interceptor๋ž‘ ๊ฐ™์ด ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€ํ† ํ•ด๋ณด์•˜์ง€๋งŒ ํ˜„์žฌ ์š”๊ตฌ์‚ฌํ•ญ์—์„œ๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต๋‹ค๊ณ  ํŒ๋‹จ

      • 2๊ฐœ ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๊ณตํ†ต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๋œ๋‹ค๊ณ  ํŒ๋‹จ

      • Interceptor์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ ํ•™์Šต

profile
์•ˆ๋…•ํ•˜์„ธ์š”

0๊ฐœ์˜ ๋Œ“๊ธ€