๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring

[Spring] BeanFactory์™€ ApplicationContext / ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ

๐Ÿ“Œ  ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ?

์Šคํ”„๋ง์—์„œ ๋นˆ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ƒ์„ฑํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ.

ํ”ํžˆ , ApplicationContext๋กœ ์•Œ๋ ค์ ธ ์žˆ๋Š”๋ฐ ์ด ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์‚ฌ์‹ค BeanFactory์˜ ์ƒ์†์„ ๋ฐ›๊ณ  ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋‘˜์˜ ์ฐจ์ด๋Š” ๋ญ˜๊นŒ. ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ดค๋‹ค.

 

 

 

BeanFactory์™€ ApplicationContext์˜ ์ƒ์†๊ด€๊ณ„

BeanFactory

  • ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์ตœ์ƒ์œ„ ์ธํ„ฐํŽ˜์ด์Šค๋‹ค.
  • ์Šคํ”„๋ง ๋นˆ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์กฐํšŒํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค.
  • getBean()์„ ์ œ๊ณตํ•œ๋‹ค.
  • ์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ–ˆ๋˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์€ BeanFactory๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. 

 

 

 

 

 

ApplicationContext

  • BeanFactory ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์ƒ์†๋ฐ›์•„์„œ ์ œ๊ณตํ•œ๋‹ค.
  • ๋นˆ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ BeanFactory ๊ฐ€ ์ œ๊ณตํ•ด์ฃผ๋Š”๋ฐ, ๋‘˜์˜ ์ฐจ์ด๋Š”?
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ๋นˆ์€ ๊ด€๋ฆฌํ•˜๊ณ  ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์€ ๋ฌผ๋ก ์ด๊ณ , ์ˆ˜๋งŽ์€ ๋ถ€๊ฐ€๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๋‹ค.
  • MessageSource ๋ฉ”์‹œ์ง€ ์†Œ์Šค๋ฅผ ํ™œ์šฉํ•œ ๊ตญ์ œํ™” ๊ธฐ๋Šฅ -> ํ•œ๊ตญ์—์„œ ๋“ค์–ด์˜ค๋ฉด ํ•œ๊ตญ์–ด๋กœ, ์˜์–ด๊ถŒ์—์„œ ๋“ค์–ด์˜ค๋ฉด ์˜์–ด๋กœ.
  • EnvironmentCapable ํ™˜๊ฒฝ ๋ณ€์ˆ˜ -> ๋กœ์ปฌ, ๊ฐœ๋ฐœ, ์šด์˜๋“ฑ์„ ๊ตฌ๋ถ„ํ•ด์„œ ์ฒ˜๋ฆฌ
  • ApplicationEventPublisher  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฒคํŠธ -> ์ด๋ฒคํŠธ๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ  ๊ตฌ๋…ํ•˜๋Š” ๋ชจ๋ธ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ง€์›
  • ResourceLoader  ํŽธ๋ฆฌํ•œ ๋ฆฌ์†Œ์Šค ์กฐํšŒ -> ํŒŒ์ผ, ํด๋ž˜์ŠคํŒจ์Šค, ์™ธ๋ถ€ ๋“ฑ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์กฐํšŒ 

 

 

BeanFactory์™€ ApplicationContext 

  • ApplicationContext๋Š” BeanFactory์˜ ๊ธฐ๋Šฅ์„ ์ƒ์†๋ฐ›๋Š”๋‹ค.
  • ApplicationContext๋Š” ๋นˆ ๊ด€๋ฆฌ๊ธฐ๋Šฅ + ํŽธ๋ฆฌํ•œ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
  • BeanFactory๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ผ์€ ๊ฑฐ์˜ ์—†๋‹ค. ๋ถ€๊ฐ€๊ธฐ๋Šฅ์ด ํฌํ•จ๋œApplicationContext๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • BeanFactory๋‚˜ ApplicationContext๋ฅผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ผ ํ•œ๋‹ค.