[Spring] -  ๐ŸŒฑ Container๋ž€?

army246ยท2022๋…„ 6์›” 2์ผ
0

Spring

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

๐ŸŒฑ Spring Container

  • ์ž๋ฐ” ๊ฐ์ฒด์˜ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ƒ์„ฑ๋œ ์ž๋ฐ” ๊ฐ์ฒด๋“ค์—๊ฒŒ ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
    ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์Šคํ”„๋ง์—์„œ๋Š” ๋นˆ(Bean)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  • IoC๋ฅผ ์ด์šฉํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€๋‹ˆ์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

  • ApplicationContext ๋ฅผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•œ๋‹ค.
    ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” XML ๊ธฐ๋ฐ˜ ์•„๋‹ˆ๋ฉด ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜์˜ ์ž๋ฐ” ์„ค์ • ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
    ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ ์„ค์ • ํด๋ž˜์Šค ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์Šคํ”„๋ง ๋นˆ์„ ๋“ฑ๋กํ•œ๋‹ค.

  • new ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ, ์ธํ„ฐํŽ˜์ด์Šค ํ˜ธ์ถœ, ๊ฐ์ฒด ์ƒ์„ฑ/์†Œ๋ฉธ์„ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋Œ€์‹ ํ•ด์ค€๋‹ค

  • AnnotationConfigApplicationContext(์Šคํ”„๋ง.class) ์Šคํ”„๋ง์— ์žˆ๋Š” @Bean์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๋“ฑ๋ก
  • xml < bean id="" class=""></ bean> ์— ๋“ฑ๋ก
  • ์ƒ์† ๊ด€๊ณ„๊ฐ€ ์žˆ์„ ์‹œ์—๋Š” ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ ์กฐํšŒํ•˜๋ฉฐ ์ž์‹ ํƒ€์ž…๋„ ํ•จ๊ป˜ ์กฐํšŒํ•œ๋‹ค.
    ๊ทธ๋ž˜์„œ ๋ชจ๋“  ์ž๋ฐ” ๊ฐ์ฒด์˜ ์ƒ์œ„ ๋ถ€๋ชจ์ธ objectํƒ€์ž…์œผ๋กœ ์กฐํšŒํ•˜๋ฉฐ ๋ชจ๋“  ์Šคํ”„๋ง ๋นˆ์„ ์กฐํšŒํ•œ๋‹ค.
  • getBean(์Šคํ”„๋ง.ํด๋ž˜์Šค)
  • getBean("{id}")

Singleton Container(์‹ฑ๊ธ€ํ†ค ์ปจํ…Œ์ด๋„ˆ)

  • ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ฑ๊ธ€ํ†ค ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ ๋„ ํ•œ๋‹ค.
    ์‹ฑ๊ธ€ํ†ค ๋นˆ์„ ๋ฏธ๋ฆฌ ๋กœ๋”ฉ (pre-loading)ํ•ด์„œ ๊ทธ ๋นˆ์ด ํ•„์š”ํ•œ ์ฆ‰์‹œ ๋ฐ”๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.
    ์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋นˆ์ด ์ƒ์„ฑ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๋œป์ด๋‹ค.

์ฐธ๊ณ 
https://steady-coding.tistory.com/459
https://flyburi.com/277

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

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