Study/Spring

BeanDefinition - ์Šคํ”„๋ง์ด ๋‹ค์–‘ํ•œ ์„ค์ • ํ˜•์‹์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ 

YURI๐Ÿ•๐Ÿ“๐Ÿถ 2022. 4. 12. 17:46
๋ฐ˜์‘ํ˜•

์Šคํ”„๋ง์ด ๋‹ค์–‘ํ•œ ์„ค์ • ํ˜•์‹์„(Annotation, xml, etc..) ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ 

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฉ”ํƒ€์ •๋ณด(beanDefinition)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์Šคํ”„๋ง ๋นˆ์„ ์ƒ์„ฑํ•œ๋‹ค.

XML์„ ์ฝ์–ด์„œ BeanDefinition์„ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.
์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ฝ์–ด์„œ BeanDefinition์„ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.
์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ์ž๋ฐ” ์ฝ”๋“œ์ธ์ง€, XML์ธ์ง€ ๋ชฐ๋ผ๋„ ๋œ๋‹ค. ์˜ค์ง BeanDefinition๋งŒ ์•Œ๋ฉด ๋œ๋‹ค.

AnnotationConfigApplicationContext์€ AnnotatedBeanDefinitionReader๋ฅผ ์‚ฌ์šฉํ•ด์„œ AppConfig.class๋ฅผ ์ฝ๊ณ  BeanDefinition์„ ์ƒ์„ฑํ•œ๋‹ค.

๐Ÿ“Œ ์ƒˆ๋กœ์šด ํ˜•์‹์˜ ์„ค์ • ์ •๋ณด๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด, XxxBeanDefinitionReader๋ฅผ ๋งŒ๋“ค์–ด์„œ BeanDefinition์„ ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค.

 

BeanDefinition

  • BeanClassName: ์ƒ์„ฑํ•  ๋นˆ์˜ ํด๋ž˜์Šค ๋ช…(์ž๋ฐ” ์„ค์ • ์ฒ˜๋Ÿผ ํŒฉํ† ๋ฆฌ ์—ญํ• ์˜ ๋นˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ์—†์Œ)
  • factoryBeanName: ํŒฉํ† ๋ฆฌ ์—ญํ• ์˜ ๋นˆ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ด๋ฆ„, ์˜ˆ) appConfig
  • factoryMethodName: ๋นˆ์„ ์ƒ์„ฑํ•  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ์ง€์ •, ์˜ˆ) memberService
  • Scope: ์‹ฑ๊ธ€ํ†ค(๊ธฐ๋ณธ๊ฐ’)
  • lazyInit: ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋นˆ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์‹ค์ œ ๋นˆ์„ ์‚ฌ์šฉํ•  ๋•Œ ๊นŒ์ง€ ์ตœ๋Œ€ํ•œ ์ƒ์„ฑ์„ ์ง€์—ฐ์ฒ˜๋ฆฌ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€
  • InitMethodName: ๋นˆ์„ ์ƒ์„ฑํ•˜๊ณ , ์˜์กด๊ด€๊ณ„๋ฅผ ์ ์šฉํ•œ ๋’ค์— ํ˜ธ์ถœ๋˜๋Š” ์ดˆ๊ธฐํ™” ๋ฉ”์„œ๋“œ ๋ช…
  • DestroyMethodName: ๋นˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ๋๋‚˜์„œ ์ œ๊ฑฐํ•˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ ๋ช…
  • Constructor arguments, Properties: ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์—์„œ ์‚ฌ์šฉํ•œ๋‹ค. (์ž๋ฐ” ์„ค์ • ์ฒ˜๋Ÿผ ํŒฉํ† ๋ฆฌ ์—ญํ• ์˜ ๋นˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ์—†์Œ)

 

๐Ÿ‘ Reference

๋ฐ˜์‘ํ˜•