• Home
  • About
    • on Weekend photo

      on Weekend

      ๐™Ž๐™ฉ๐™ช๐™™๐™ฎ๐™ž๐™ฃ๐™œ

    • Learn More
    • Instagram
    • Github
  • Archive
    • All Posts
    • All Tags
    • All Categories
  • Categories
    • Problem Solving
    • TIL
    • Study
    • Etc
    • ํ•„์‚ฌ
  • Projects

Spring Study - 7

21 Dec 2020

7. AOP

๋ชฉ์ฐจ

  1. AOP๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ
  2. AOP ์ ์šฉ
  3. ๋‹ค์Œ์œผ๋กœ

์ˆ˜๊ฐ• ์ฝ”์Šค๋Š” ์ธํ”„๋Ÿฐ ์Šคํ”„๋ง ์ž…๋ฌธ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


AOP๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ

  • ๊ฐ€๋ น ๋ชจ๋“  ๋ฉ”์†Œ๋“œ์˜ ํ˜ธ์ถœ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋ ค๋ฉด?
    • ์‹œ๊ฐ„ ์ธก์ • ๋กœ์ง(๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ)๊ณผ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ)์ด ์„ž์ด๊ณ , ์‹œ๊ฐ„ ์ธก์ • ๋กœ์ง์ด ๋ฐ”๋€Œ๋ฉด ๋ชจ๋“  ๋กœ์ง์„ ์ฐพ์•„๊ฐ€๋ฉฐ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค.

AOP ์ ์šฉ

  • ์›ํ•˜๋Š” ๊ณณ์— ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด AOP(Aspect Oriented Programming)๊ฐ€ ๋„์ž…๋œ๋‹ค. => ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ๊ณผ ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ์„ ๋ถ„๋ฆฌํ•œ๋‹ค.
  • ๊ฐ€๋ น, ์‹œ๊ฐ„ ์ธก์ • ๋กœ์ง์€ ๋”ฐ๋กœ ๋งŒ๋“ค๊ณ  ๊ฐ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๊ณตํ†ต์œผ๋กœ ์ ์šฉํ•ด์ฃผ๋Š” ๊ฒƒ์ž„.
  • @Aspect ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • @Around("execution(* hello.hellospring..*(..))") ์„ ์‚ฌ์šฉํ•ด hello.hellospring ๋ฐ‘์˜ ๋ชจ๋“  ํด๋ž˜์Šค๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค AOP๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • AOP์˜ ๋™์ž‘์€
    1. helloController ์‹คํ–‰
    2. ํ”„๋ก์‹œ memberService ์‹คํ–‰
      • AOP๊ฐ€ ์žˆ์œผ๋ฉด ์Šคํ”„๋ง๋นˆ์„ ๋“ฑ๋กํ•  ๋•Œ ํ”„๋ก์‹œ๋ฅผ ์‹ค์ œ ์ฝ”๋“œ ์•ž์— ์„ธ์›Œ๋‘”๋‹ค(?) 2.1. joinPoint.proceed() ์‹คํ–‰
    3. ์‹ค์ œ memberService ์‹คํ–‰
      • CGLIB? ๋ณต์ œ๋ฅผ ํ•ด์„œ ๋ญ”๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•œ๋‹ค.

์ด์ •๋ฆฌ

  1. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ : ์ •์ ์ปจํ…์ธ , MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„, API(Json ์Šคํƒ€์ผ๋กœ ๊ฐ์ฒด๋ฅผ ๋ณ€ํ™˜ํ•ด์„œ ๋‚ด๋ ค์ฃผ๋Š” ๊ธฐ์ˆ )
  2. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ
    • ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ ์ •๋ฆฌ
    • ํšŒ์› ๋„๋ฉ”์ธ๊ณผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ(์ €์žฅ์†Œ) ์ œ์ž‘
    • ์ด๋ฅผ ์ˆœ์ˆ˜ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑํ•ด๋ด„
    • ํšŒ์› ์„œ๋น„์Šค ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ
  3. ์Šคํ”„๋ง ๋นˆ๊ณผ ์˜์กด๊ด€๊ณ„
    • ์ปจํŠธ๋กค๋Ÿฌ, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋“ฑ์„ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ์˜ฌ๋ ค์„œ ์“ฐ๊ณ  ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์œผ๋กœ ์ž๋™ ์˜์กด๊ด€๊ณ„ ์„ค์ •, ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ง์ ‘ ์Šคํ”„๋ง ๋นˆ ๋“ฑ๋กํ•  ์ˆ˜๋„ ์žˆ์Œ.
  4. ์›น MVC
  5. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ 
    • H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (์‹ค์Šต์šฉ, ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์‚ฌ์šฉ)
    • ์ˆœ์ˆ˜ JDBC๋กœ ์ฝ”๋”ฉํ•˜๋Š” ๋ฒ• (๊ณ ๋Œ€ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์ฝ”๋”ฉ)
    • ์Šคํ”„๋ง ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ
    • ์Šคํ”„๋ง JdbcTemplate (์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜๋ณต ์ฝ”๋“œ๋ฅผ ํ™• ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. sql์€ ์ง์ ‘ ์ž‘์„ฑ)
    • JPA
    • ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA (์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์ž‘์„ฑํ•ด์„œ ์‚ฌ์šฉ)
  6. AOP
    • ๋ฉ”์†Œ๋“œ ์‹œ์ž‘๊ณผ ๋ ๋“ฑ์— ๋ญ”๊ฐ€๋ฅผ ํ•ด์•ผํ•  ๋•Œ ํ•œ ๋ฐฉ์— ์›ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ฐ์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ .
  • ์ด์ œ๋ถ€ํ„ฐ๋Š” ๊ฐ๊ฐ์˜ ๊ธฐ์ˆ ์„ ๊นŠ๊ฒŒ ์ดํ•ดํ•ด์•ผํ•œ๋‹ค. ์ด์ œ ์ด๋ก ์„ ๊ณต๋ถ€ํ•  ๋•Œ์—๋„ ์กฐ๊ธˆ ๋” ์ˆ˜์›”ํ•  ๊ฒƒ.
  • ์Šคํ”„๋ง์€ ๋„ˆ๋ฌด ๊ฑฐ๋Œ€ํ•ด์„œ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค ํ•˜๊ธฐ๋Š” ๋งค์šฐ ์–ด๋ ต๋‹ค. ํ† ๋น„์ฑ…๋„ 1400, 1500ํŽ˜์ด์ง€ ์ •๋„ ๋˜๋Š”๋ฐ, ์‹ค์ œ ์†Œ์Šค์ฝ”๋“œ๋กœ ์ดํ•ดํ•˜๋ ค๋ฉด ๊ต‰์žฅํžˆ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ณ  ๊ทธ์ •๋„ ์ดํ•ดํ•  ํ•„์š”๋„ ์—†๋‹ค. ์Šคํ”„๋ง์„ ํ™œ์šฉํ•ด ์‹ค๋ฌด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค. ์™œ ์ด๋Ÿฐ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํ•„์š”ํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ์จ์•ผํ•˜๋Š”์ง€ ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ์ฐพ๊ณ , ๋Œ€๋žต ์–ด๋””์ฏค์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋ฅผ ์•Œ์•„์ฐจ๋ฆฌ๊ณ  ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ์ค‘์š”ํ•˜๋‹ค.
  • ์šฐ์•„ํ•œํ˜•์ œ๋“ค ์ž…์‚ฌํ•  ๋•Œ์—๋Š” PHP์˜€๋Š”๋ฐ, ๋‹น์‹œ ์Šคํ”„๋ง ๊ต์œก์„ ์˜ํ•œ๋‹˜๊ป˜์„œ ์ง„ํ–‰ํ•˜์…จ๋‹ค๊ณ  ํ•œ๋‹ค. ์Šคํ”„๋ง์„ ์™„์ „ํžˆ ๋งˆ์Šคํ„ฐํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๋ฆฌ์ฆˆ๋ฅผ ์ค€๋น„ ์ค‘์ด๋ฉฐ, ์‹ค์ œ ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ ์œ„์ฃผ๋กœ ์„ค๋ช…ํ•˜๊ณ  ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์˜ค๋ž˜๋œ ๊ธฐ๋Šฅ์€ ์‚ญ์ œํ•œ ๊ฐ•์˜๋ฅผ ์ค€๋น„์ค‘์ด์‹ฌ.

๋‹จ์ถ•ํ‚ค

  • Ctrl + Alt + N : inline์œผ๋กœ ํ•ฉ์น˜๊ธฐ


springbackend Share Tweet +1