[Spring Framework] IoC ์ปจํ…Œ์ด๋„ˆ & Bean ๊ฐœ๋… ์ดํ•ด ํ•˜๊ธฐ

2024. 10. 21. 06:55ยท๐Ÿ› ๏ธBackend/๐ŸŒณSpring

 

 

1. IoC Container ( ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ )

์•ž์„œ ์‚ดํŽด๋ณธ IoC๋Š” "์ œ์–ด์˜ ์—ญ์ „", IoC Container์—๊ฒŒ ์ œ์–ด์˜ ๊ถŒํ•œ์„ ๋„˜๊ธด๋‹ค๊ณ  ์„ค๋ช…์„ ํ–ˆ์—ˆ๋‹ค. IoC Container๋Š” ๊ฐ์ฒด๋ฅผ ์˜์กด์„ฑ ์ฃผ์ž…์„ ์‹œ์ผœ์ฃผ๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด๋“ค์„ ๋ชจ๋‘ ์ปจํ…Œ์ด๋„ˆ์— ๋„ฃ์–ด์„œ ๋ณด๊ด€์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‚ด๋ถ€์˜ ๊ฐ์ฒด๋“ค์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ณผ์ •์œผ๋กœ๋Š” ๋จผ์ € ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ์ธ์Šคํ„ด์Šคํ™” ๋˜๊ณ , ์ธ์Šคํ„ด์Šคํ™” ๋œ ๊ฐ์ฒด๋“ค์€ ์˜์กด์„ฑ ์ฃผ์ž…์ด ์ž๋™์œผ๋กœ ๋ฉ๋‹ˆ๋‹ค.
์ด๋ ‡๋“ฏ, IoC Container๋Š” Bean(๊ฐ์ฒด) ๋“ค์„ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์ž๋™์œผ๋กœ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 * IoC Container๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด๋“ค์€ ๋ชจ๋‘ Bean์ด๋‹ค.

 

- IoC ์ปจํ…Œ์ด๋„ˆ๋Š” ์ž๋ฐ”์˜ ๊ฐ์ฒด๋กœ์จ ์กด์žฌํ•œ๋‹ค.

- ๋Œ€ํ‘œ์ ์ธ ๊ตฌํ˜„์ฒด๋กœ๋Š” BeanFactory ์™€ ์ด๋ฅผ ํ™•์žฅํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ธ ApplicationContext ๊ฐ€ ์žˆ๋‹ค.

- ApplicationContext๋Š” Bean ๊ด€๋ฆฌ ์™ธ์—๋„ ๋‹ค์–‘ํ•œ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณต ํ•˜๊ณ , ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋จ

* ApplicationContext ๋ฐ IoC ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด๋ฃจ๋Š” ๊ตฌํ˜„์ฒด๋“ค์˜ ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ ์žฅ์— ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ค.


 

2. Bean

IoC Container์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด ์ด๋‹ค. ํ•ด๋‹น Bean์€ ํ•„์š”์— ๋”ฐ๋ผ ์ธ์Šคํ„ด์Šคํ™” ๋˜์–ด ๊ฐ์ฒด๋กœ์จ ์‚ฌ์šฉ์ด ๋œ๋‹ค. ๋˜ํ•œ, ์ธ์Šคํ„ด์Šคํ™” ๋œ Bean ๊ฐ์ฒด๋Š” IoC Container์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์˜์กด์„ฑ ์ฃผ์ž…์ด ๋œ๋‹ค.
์ด๋Ÿฌํ•œ Bean๋“ค์€ XML ๊ตฌ์„ฑํŒŒ์ผ ๋ฐ ์• ๋„ˆํ…Œ์ด์…˜ ๊ฐ™์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ์„ค์ •์ด ๋œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด IoC Container๋Š” ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๊ณ , ์–ด๋–ค ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•ด์•ผ ํ• ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

3. IoC ์ปจํ…Œ์ด๋„ˆ Bean ๋“ฑ๋ก

- IoC ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋  ๊ฐ์ฒด๋“ค์„ Bean์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ Bean ๋“ฑ๋ก์ด๋ผ๊ณ  ํ•œ๋‹ค.

- IoC ์ปจํ…Œ์ด๋„ˆ๋Š” Bean์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Bean์œผ๋กœ ๋งŒ๋“ค์–ด์งˆ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

- IoC ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋“ค์—ฌ, ๊ฐ์ฒด๋ฅผ Bean์œผ๋กœ ๋“ฑ๋ก์„ ํ•œ๋‹ค. IoC ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๊ณผ์ •์ด๋‹ค.

- ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ํฌ๊ฒŒ ์• ๋„ˆํ…Œ์ด์…˜ ๋ฐฉ์‹๊ณผ XML ๋ฐฉ์‹์ด ์กด์žฌํ•˜๋ฉฐ ๊ทธ ๋ฐ–์—๋„ ๋” ์กด์žฌํ•œ๋‹ค.

* IoC ์ปจํ…Œ์ด๋„ˆ๊ฐ€ Bean ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ์ž์„ธํ•œ ๋ฐฉ์‹์€ ๋‹ค์Œ์žฅ ์—์„œ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ค.
 

 

์ฐธ์กฐ ( Spring ๊ณต์‹ ๋ฌธ์„œ )

https://docs.spring.io/spring-framework/reference/core/beans/introduction.html

 

Introduction to the Spring IoC Container and Beans :: Spring Framework

This chapter covers the Spring Framework implementation of the Inversion of Control (IoC) principle. Dependency injection (DI) is a specialized form of IoC, whereby objects define their dependencies (that is, the other objects they work with) only through

docs.spring.io

'๐Ÿ› ๏ธBackend > ๐ŸŒณSpring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring Data JPA] JPA Entity ํด๋ž˜์Šค์— ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ํ•„์š”ํ•œ ์ด์œ   (0) 2024.12.30
[Spring Framework] IoC ์ปจํ…Œ์ด๋„ˆ ๋™์ž‘ ์›๋ฆฌ  (0) 2024.11.14
[Spring MVC] ์š”์ฒญ๊ณผ ์‘๋‹ต์— ๋Œ€ํ•œ ๋™์ž‘ ์›๋ฆฌ  (1) 2024.11.05
[Spring Framework] IoC & DI ๊ฐœ๋… ์ดํ•ด ํ•˜๊ธฐ  (0) 2024.10.20
[Spring Framework] Spring & Spring Framework ์ฐจ์ด  (0) 2024.10.19
'๐Ÿ› ๏ธBackend/๐ŸŒณSpring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring Framework] IoC ์ปจํ…Œ์ด๋„ˆ ๋™์ž‘ ์›๋ฆฌ
  • [Spring MVC] ์š”์ฒญ๊ณผ ์‘๋‹ต์— ๋Œ€ํ•œ ๋™์ž‘ ์›๋ฆฌ
  • [Spring Framework] IoC & DI ๊ฐœ๋… ์ดํ•ด ํ•˜๊ธฐ
  • [Spring Framework] Spring & Spring Framework ์ฐจ์ด
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (155)
      • ๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต (26)
        • ๐Ÿ–ฅ๏ธ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ (1)
        • ๐ŸŒ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ… (11)
        • โš™๏ธ์ปดํ“จํ„ฐ์˜ ์ดํ•ด (11)
        • ๐Ÿ›๏ธ์„ธ๊ณ„์˜์ •์น˜์™€๊ฒฝ์ œ (3)
      • ๐Ÿ› ๏ธBackend (52)
        • ๐Ÿ“š๋ฐฑ์—”๋“œ ๊ณต๋ถ€ (4)
        • โ˜•Java (21)
        • ๐ŸŒณSpring (11)
        • โšกPython (13)
        • JavaScript (1)
        • ๐Ÿ›ข๏ธDatabase (0)
        • Algorithm Problem Solving (2)
      • ๐ŸŒ Network (7)
        • ๐Ÿ“œHTTP (7)
      • ๐Ÿš€DevOps (1)
      • Data Structure (1)
      • โ›บ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ (65)
      • ์ •๋ณด (1)
      • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธ€ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…๊ฐœ๋ก 
    ์œ ๋น„์ฟผํ„ฐ์Šค
    ์ž…์ถœ๋ ฅ
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…
    ํด๋ผ์šฐ๋“œ
    ํด๋ž˜์Šค
    ์Šคํ”„๋ง
    ํŒŒ์ด์ฌ
    ๋ฐฉ์†ก๋Œ€
    ์„ธ๊ณ„ํ™”
    ์ž๋ฐ”
    ์ปดํ“จํ„ฐ์˜ ์ดํ•ด
    ๋‹คํ˜•์„ฑ
    Java
    ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต
    Python
    ์ปดํŒŒ์ผ๋Ÿฌ
    spring
    ๋ฐฉํ†ต๋Œ€
    Spring Framework
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
junbin2
[Spring Framework] IoC ์ปจํ…Œ์ด๋„ˆ & Bean ๊ฐœ๋… ์ดํ•ด ํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

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