[Spring] IoC, DI, Bean

🌟 IoC와 DI

🎯IoCλž€?

ν”„λ ˆμž„μ›Œν¬ μžμ²΄μ— μ œμ–΄ κΆŒν•œμ„ λ„˜κΈ°λŠ” μ „λž΅μž…λ‹ˆλ‹€. 주둜 κ°œλ°œμžκ°€ ν•˜λ˜ 객체 μ˜μ‘΄κ΄€κ³„ μ œμ–΄μ—­ν• μ„ ν”„λ ˆμž„μ›Œν¬ν•œν…Œ λ„˜κΉ€μœΌλ‘œμ¨ κ°œλ°œμžλŠ” 큰 ꡬ쑰만 μ„€κ³„ν•˜κ³  세뢀적인 λ™μž‘μ΄λ‚˜ ν˜ΈμΆœμ„ 신경쓰지 μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μΆ”κ°€μ μœΌλ‘œ 객체 μžμ²΄μ— μ˜μ‘΄μ„±μ„ μ§μ ‘μ μœΌλ‘œ λͺ…μ‹œν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μœ μ—°ν•œ μœ μ§€λ³΄μˆ˜λ˜ν•œ κ°€λŠ₯ν•΄μ§„λ‹€λŠ” μž₯점을 κ°€μ§‘λ‹ˆλ‹€.

μŠ€ν”„λ§ μ•ˆμ—μ„œμ˜ IoCλ₯Ό 예제둜 λ“€μžλ©΄ μŠ€ν”„λ§μ€ κ°œλ°œμžκ°€ μƒμ„±ν•œ 객체λ₯Ό 관리 μ»¨ν…Œμ΄λ„ˆκ°€ κ°œλ°œμžκ°€ μž‘μ„±ν•œ xml 섀정에 따라 κ΄€λ¦¬ν•΄μ£ΌλŠ” μΌ€μ΄μŠ€λ₯Ό λ“€ 수 μžˆκ² μŠ΅λ‹ˆλ‹€.

μ •λ¦¬ν•˜μžλ©΄ ν”„λ ˆμž„μ›Œν¬ 내에 μ •μ˜λœ μΈν„°νŽ˜μ΄μŠ€λ‚˜ μΆ”μƒνƒ€μž…μ„ 상속받아 κ΅¬ν˜„ν•œ λ’€ λ‚˜λ¨Έμ§€λŠ” λ„ˆκ°€ 관리해주라 라고 ν•˜λŠ”κ²Œ IoCμž…λ‹ˆλ‹€.

🎯DIλž€?

DIλž€ μ˜μ‘΄μ„± μ£Όμž…μ„ μ˜λ―Έν•©λ‹ˆλ‹€. μ˜μ‘΄μ„±μ„ 가지고 μžˆλŠ” 객체의 관계λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ 방법 쀑 ν•˜λ‚˜μΈλ°, 의쑴적인 객체λ₯Ό 직접 μƒμ„±ν•˜κ±°λ‚˜ μ œμ–΄ν•˜μ§€ μ•Šκ³  μ•žμ„œ λ§ν•œ IoCλ₯Ό 톡해 μ™ΈλΆ€μ—μ„œ μ£Όμž…ν•˜μ—¬ μŠ€ν”„λ§ μžμ²΄μ—μ„œ μ‹€ν–‰ν•©λ‹ˆλ‹€.

🎯IoC μ»¨ν…Œμ΄λ„ˆ(μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆ)λž€?

μ‚¬λžŒμ΄ μž…λ ₯ν•œ μ†ŒμŠ€λ₯Ό IoC μ»¨ν…Œμ΄λ„ˆκ°€ λ°›μ•„μ„œ μ‚¬λžŒλŒ€μ‹  컴퓨터 μ•ˆμ—μ„œ λ™μž‘ν•΄μ£Όκ³ , μ‚¬λžŒμ΄ 직접 μž‘μ„±ν•˜μ§€ μ•Šμ€ 객체의 생성과 μ†Œλ©Έ λ˜ν•œ μ•Œμ•„μ„œ κ΄€λ¦¬ν•΄μ£ΌλŠ” κ²ƒμž…λ‹ˆλ‹€. μ΄λ ‡κ²Œ IoC μ»¨ν…Œμ΄λ„ˆλŠ” Bean을 κ΄€λ¦¬ν•˜κ³  μ €μž₯ν•˜κΈ°λ•Œλ¬Έμ— BeanFactory라고도 λΆ€λ₯Έλ‹€κ³  ν•©λ‹ˆλ‹€. 개인적인 κ°μƒμœΌλ‘œλŠ” κ°œμ©ŒλŠ” 개발자λ₯Ό 컴퓨터 μ•ˆμ— 볡사해놓은 λ“― ν•˜λ„€μš”. 짱 λ©‹ μ Έ

🎯Beanμ΄λž€?

μ»¨ν…Œμ΄λ„ˆμ—μ„œ 생성, 관계섀정 및 κ΄€λ¦¬λ˜λŠ” 객체λ₯Ό ν†΅μΉ­ν•©λ‹ˆλ‹€. Bean으둜 λ“±λ‘ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ„€μ • 메타정보λ₯Ό xml, annotation λ“±λ“±μœΌλ‘œ μ„€μ •ν•΄μ€λ‹ˆλ‹€. μ΄λ ‡κ²Œ μ„€μ •λœ λ©”νƒ€μ •λ³΄λŠ” BeanDefinitionReader μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 BeanDefinition객체둜 λ³€ν™˜λ©λ‹ˆλ‹€. 이 객체λ₯Ό IoC Containerκ°€ λ°›μ•„μ„œ DIμž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

https://m.blog.naver.com/PostView.nhn?blogId=pjok1122&logNo=221744895053&proxyReferer=https:%2F%2Fwww.google.co.kr%2F https://pks424.tistory.com/entry/IoC-DIλž€ https://limmmee.tistory.com/13


Written by@μ΄μ£Όν˜•
εΉ³εΈΈεΏƒ

GitHubFacebook