[Spring] - ๐ŸŒฑ Spring์ด๋ž€?

army246ยท2022๋…„ 5์›” 26์ผ
0

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
1/7

๐ŸŒฑ 1. Spring

  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ž๋ฐ” ํ”Œ๋žซํผ์„ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.
  • ํ…Œ์ŠคํŠธ์˜ ์šฉ์ด์„ฑ, ๋Š์Šจํ•œ ๊ฒฐํ•ฉ์— ์ค‘์ ์„ ๋‘๋ฉด์„œ ๊ฐœ๋ฐœ๋œ๋‹ค.
  • ์Šคํ”„๋ง ๋ถ€ํŠธ, ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ, ์Šคํ”„๋ง ๋ฐฐ์น˜, ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ชจ๋“ˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ์Šคํ”„๋ง์€ IoC / DI , AOP ๊ด€์  ์ค‘์‹ฌ ํ”„๋กœ๊ทธ, PSA ํŠน์ง•์ด ์žˆ๋‹ค.

1-1. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Object Oriented Programming)

  • ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜์€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
  • ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ๋œ ๋‹จ์œ„์ธ ๊ฐ์ฒด๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ทœ๋ชจ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋œ๋‹ค.

1-1-1. ๐Ÿ”ฅ ๊ฐ์ฒด์ง€ํ–ฅ ํ•ต์‹ฌ ๐Ÿ”ฅ

  • ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์บก์Šํ™”, ์ถ”์ƒํ™”, ์ƒ์†, ๋‹คํ˜•์„ฑ๋“ฑ ํŠน์ง•์ด ์žˆ๋‹ค.

    ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹คํ˜•์„ฑ ์ด ์ค‘์š”ํ•˜๋‹ค!

1-1-2. ๐Ÿ”ฅ ๋‹คํ˜•์„ฑ ๐Ÿ”ฅ

  • ๋‹คํ˜•์„ฑ์€ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํƒ€์ž…์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ์ž๋ฐ”์—์„œ๋Š” ๋‹คํ˜•์„ฑ์„ ๋ถ€๋ชจ ํด๋ž˜์Šค ํƒ€์ž…์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜๋กœ ์ž์‹ ํด๋ž˜์Šค ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค.
  • ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ํ•ต์‹ฌ์€ ๋‹คํ˜•์„ฑ์ด๋‹ค.

1-2. SOLID(๊ฐ์ฒด์ง€ํ–ฅ์„ค๊ณ„)

  • ์ข‹์€ ์„ค๊ณ„๋ฅผ ์œ„ํ•ด์„œ๋Š” ๊ฒฐํ•ฉ๋„๋Š” ๋‚ฎ์ถ”๊ณ  ์‘์ง‘๋„๋Š” ๋†’์—ฌ์•ผ ํ•œ๋‹ค.
  • ๊ฒฐํ•ฉ๋„ : ๋ชจ๋“ˆ(ํด๋ž˜์Šค)๊ฐ„์˜ ์ƒํ˜ธ ์˜์กด ์ •๋„
    - ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์œผ๋ฉด ํด๋ž˜์Šค๊ฐ„์˜ ์ƒํ˜ธ ์˜์กด์„ฑ์ด ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์˜ ์žฌ์‚ฌ์šฉ, ์œ ์ง€๋ณด์ˆ˜ ์œ ๋ฆฌ
  • ์‘์ง‘๋„ : ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ ๋‚ด๋ถ€์— ์กด์žฌํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋“ค์˜ ๊ธฐ๋Šฅ์  ๊ด€๋ จ์„ฑ
    - ์‘์ง‘๋„๊ฐ€ ๋†’์€ ๋ชจ๋“ˆ์€ ํ•˜๋‚˜์˜ ์ฑ…์ž„์— ์ง‘์ค‘, ๋…๋ฆฝ์„ฑ์ด ๋†’์•„์ง€๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ, ์œ ์ง€๋ณด์ˆ˜ ์œ ๋ฆฌ
  1. SRP: ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(single responsibility principle)

    • ํ•œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
  2. OCP: ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™ (Open/closed principle)

    • ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ์œผ๋‚˜ ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

    • ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์†Œ์Šค์ฝ”๋“œ์˜ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€ํ”ผํ•˜๋‹ค. ๋‹คํ˜•์„ฑ์„ ์ด์šฉํ•˜๋”๋ผ๋„ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค. ์ด๋Š” OCP ์›์น™์— ์œ„๋ฐฐ๋œ๋‹ค.
      ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๋งบ์–ด์ฃผ๋Š” ๋ณ„๋„์˜ ์กฐ๋ฆฝ, ์„ค์ •์ž๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

  3. LSP: ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ (Liskov substitution principle)

    • ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ์ฒด๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ •ํ™•์„ฑ์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š์œผ๋ฉด์„œ ํ•˜์œ„ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.๋‹คํ˜•์„ฑ์—์„œ ํ•˜์œ„ ํด๋ž˜์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๊ทœ์•ฝ์„ ๋‹ค ์ง€์ผœ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ, ๋‹คํ˜•์„ฑ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ ํ•œ ์›์น™,
      ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ตฌํ˜„์ฒด๋Š” ๋ฏฟ๊ณ  ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ์ด ์›์น™์ด ํ•„์š”ํ•˜๋‹ค.
  4. ISP: ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ (Interface segregation principle)

    • ํŠน์ • ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๋ฒ”์šฉ ์ธํ„ฐํŽ˜์ด์Šค ํ•˜๋‚˜๋ณด๋‹ค ๋‚ซ๋‹ค.
  5. DIP: ์˜์กด๊ด€๊ณ„ ์—ญ์ „ ์›์น™ (Dependency inversion principle)

    • ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” โ€œ์ถ”์ƒํ™”์— ์˜์กดํ•ด์•ผ์ง€, ๊ตฌ์ฒดํ™”์— ์˜์กดํ•˜๋ฉด ์•ˆ๋œ๋‹ค.โ€ ์˜์กด์„ฑ ์ฃผ์ž…์€ ์ด ์›์น™ ์„ ๋”ฐ๋ฅด๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋‹ค. ์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐํ•ด์„œ ๊ตฌํ˜„ ํด๋ž˜์Šค์— ์˜์กดํ•˜์ง€ ๋ง๊ณ , ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•˜๋ผ๋Š” ๋œป์ด๋‹ค.

์ฐธ๊ณ 
์Šคํ”„๋ง
๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(์œ„ํ‚ค๋ฐฑ๊ณผ)
์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ(์œ„ํ‚ค๋ฐฑ๊ณผ)
SOLID(์œ„ํ‚ค๋ฐฑ๊ณผ)

profile
์ฒœ์ฒœํžˆ ๊พธ์ค€ํžˆ

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