๐Ÿ’ Spring/Spring ํ•ต์‹ฌ ๊ธฐ์ˆ 

1. IoC ์ปจํ…Œ์ด๋„ˆ 1๋ถ€ : ์Šคํ”„๋ง IoC ์ปจํ…Œ์ด๋„ˆ์™€ ๋นˆ

2020. 6. 16. 10:00
๋ฐ˜์‘ํ˜•

IoC ๋ž€?

 

Inversion of Control : ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž…( Dependency Injection) ์ด๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์˜์กด ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ์ฃผ์ž… ๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•จ

 

 

 

 

์Šคํ”„๋ง IoC ์ปจํ…Œ์ด๋„ˆ

  • BeanFactory
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปดํฌ๋„ŒํŠธ์˜ ์ค‘์•™ ์ €์žฅ์†Œ
  • ๋นˆ ์„ค์ • ์†Œ์Šค๋กœ ๋ถ€ํ„ฐ ๋นˆ ์ •์˜๋ฅผ ์ฝ์–ด๋“ค์ด๊ณ , ๋นˆ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์ œ๊ณตํ•œ๋‹ค.

 

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋นˆ(bean)์ด๋ผ๊ณ  ํ•˜๊ณ , ์ด ๋นˆ(bean)๋“ค์„ ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ 

๋นˆ ํŒฉํ† ๋ฆฌ(BeanFactory) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

BeanFactory์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์Šค(ApplicationContext)๋ผ๊ณ  ๋ถ€๋ฆ„

 

 

OwnerController ๊ฐ€ IoC ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ๋“ค์–ด์˜ค๊ณ , ์ปจํ…Œ์ด๋„ˆ์—์„œ OwnerController ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ , OwnerRepository ์˜ ๊ฐ์ฒด๋„ ๋งŒ๋“ค์–ด ์ค€๋‹ค. -> Bean

์ฆ‰, Bean๋“ค์˜ ์˜์กด์„ฑ๋“ค์„ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์ค€๋‹ค.

IoC ์ปจํ…Œ์ด๋„ˆ๋Š” Bean๋“ค์˜ ์˜์กด์„ฑ์„ ์—ฎ์–ด์ฃผ๋ฉฐ ์ฃผ์ž…์„ ์ž๋™์ ์œผ๋กœ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

IoC ์ปจํ…Œ์ด๋„ˆ : OwnerController๊ฐ€ Bean์œผ๋กœ ๋“ฑ๋ก์ด ๋˜๊ณ  (@Controller๋ผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์—), IoC ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ๋“ค์–ด๊ฐ€์„œ ๊ทธ ๊ฐ์ฒด๋“ค์„ ๋งŒ๋“ค๊ณ , ๊ทธ ๊ฐ์ฒด๋“ค์˜ ์˜์กด์„ฑ์„ ์—ฎ์–ด์ค€๋‹ค. OwnerRepository ๋ผ๋Š” Bean์„ ์ฐพ์•„์„œ ์ƒ์„ฑ์ž์—๋‹ค๊ฐ€ ์˜์กด์„ฑ์„ ์ฃผ์ž…์‹œ์ผœ์ฃผ๋Š” ์ผ์„ ํ•œ๋‹ค.

 

 

 

 

 

๋นˆ

  • ์Šคํ”„๋ง IoC ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด
  • ์žฅ์ 
    • ์˜์กด์„ฑ ๊ด€๋ฆฌ
    • ์Šค์ฝ”ํ”„
      • ์‹ฑ๊ธ€ํ†ค(๊ธฐ๋ณธ๊ฐ’) : ํ•˜๋‚˜์˜ ๊ฐ์ฒด
      • ํ”„๋กœํ† ํƒ€์ž… : ๋งค๋ฒˆ ๋‹ค๋ฅธ ๊ฐ์ฒด
    • ๋ผ์ดํ”„์‚ฌ์ดํด ์ธํ„ฐํŽ˜์ด์Šค

 

 

 

ApplicationContext

  • BeanFactory
  • ๋ฉ”์‹œ์ง€ ์†Œ์Šค ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ
  • ์ด๋ฒคํŠธ ๋ฐœํ–‰ ๊ธฐ๋Šฅ
  • ๋ฆฌ์†Œ์Šค ๋กœ๋”ฉ ๊ธฐ๋Šฅ
  • ....

ApplcationContext  : ์–˜๊ฐ€ Bean๋“ค์„ ๋งŒ๋“ค๊ณ , ๊ทธ Bean๋“ค์˜ ์˜์กด์„ฑ์„ ์—ฎ์–ด์ค€๋‹ค. ์˜ค๋กœ์ง€ Bean๋“ค๋งŒ ๊ด€๋ฆฌ!

๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ’ Spring/Spring ํ•ต์‹ฌ ๊ธฐ์ˆ ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • 5. IoC ์ปจํ…Œ์ด๋„ˆ 5๋ถ€ : ๋นˆ์˜ ์Šค์ฝ”ํ”„
  • 2. IoC ์ปจํ…Œ์ด๋„ˆ 2๋ถ€ : ApplicationContext์™€ ๋‹ค์–‘ํ•œ ๋นˆ ์„ค์ • ๋ฐฉ๋ฒ•
  • 3. IoC ์ปจํ…Œ์ด๋„ˆ 3๋ถ€ : @Autowired
  • 4. IoC ์ปจํ…Œ์ด๋„ˆ 4๋ถ€ : @Component์™€ ์ปดํฌ๋„ŒํŠธ ์Šค์บ”
iseunghan
iseunghan
๊พธ์ค€ํ•˜๊ฒŒ ์—ด์‹ฌํžˆ..
iseunghan
iseunghan

๊ณต์ง€์‚ฌํ•ญ

  • ์–ด์ œ๋ณด๋‹ค ๋‚˜์€ ์˜ค๋Š˜์ด ๋˜๊ธฐ ์œ„ํ•ด ๐Ÿ”ฅ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (261)
    • ๐Ÿ’ Spring (14)
      • ๊ฐœ๋… ๋ฐ ์ดํ•ด (2)
      • Spring ํ•ต์‹ฌ ๊ธฐ์ˆ  (24)
      • Spring REST API (8)
      • Spring MVC, DB ์ ‘๊ทผ ๊ธฐ์ˆ  (7)
      • Spring Security (23)
      • Spring in Action (1)
    • ๐ŸŒป JAVA (84)
      • ์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ (20)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ (13)
      • ๋””์ž์ธ ํŒจํ„ด (7)
      • ์ •๋ฆฌ์ •๋ฆฌ์ •๋ฆฌ (43)
      • JUnit (1)
    • ๐Ÿ”– Snippets (3)
      • Javascript (3)
    • โš™๏ธ Devops (22)
      • โ› Git (11)
      • ๐Ÿณ Docker (6)
      • ๐Ÿง Linux (3)
      • ๐ŸŒˆ Jenkins (1)
      • ๐Ÿ“ฌ Kafka (1)
    • ๐Ÿ’ฌ ETC.. (4)
      • ๐Ÿ’ป macOS (2)
    • ๐ŸŒง๏ธ ORM (2)
      • JPA (2)
    • ๐Ÿ Python (2)
    • ๐Ÿ“š Databases (15)
      • ์˜ค๋ผํด๋กœ ๋ฐฐ์šฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก ๊ณผ ์‹ค์Šต(2ํŒ) (3)
      • RealMySQL 8.0 (8)
    • ๐Ÿ”ฅ Computer Science (5)
      • ๐Ÿ“ก ๋„คํŠธ์›Œํฌ (5)
    • ๐Ÿท๏ธ ํ˜‘์—… (1)
    • ๐Ÿ“œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (38)
      • BAEKJOON\์ˆ˜ํ•™ 1, ์ˆ˜ํ•™ 2 (8)
      • BAEKJOON\์žฌ๊ท€ (5)
      • BAEKJOON\๋ธŒ๋ฃจํŠธ ํฌ์Šค (3)
      • BAEKJOON\์ •๋ ฌ (1)
      • BAEKJOON\๋ฐฑํŠธ๋ž˜ํ‚น (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\์ด๋ถ„ํƒ์ƒ‰ (1)
      • BAEKJOON\๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (9)
      • BAEKJOON\๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ (0)
    • โœจ ISEUNGHAN (1)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
iseunghan
1. IoC ์ปจํ…Œ์ด๋„ˆ 1๋ถ€ : ์Šคํ”„๋ง IoC ์ปจํ…Œ์ด๋„ˆ์™€ ๋นˆ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.