๊ด€๋ฆฌ ๋ฉ”๋‰ด

Tech Log ๐Ÿ› ๏ธ

Application Context VS Bean Factory ๋ณธ๋ฌธ

TIL

Application Context VS Bean Factory

sehaan 2023. 6. 24. 22:32

0. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ž€? or IOC Container

 

- DI ์„ ์ด์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ์—ฌ๋Ÿฌ ๋นˆ(Bean)๋“ค์˜ ์ƒ๋ช…์ฃผ๊ธฐ(Lifecycle)์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„œ๋น„์Šค ์‹คํ–‰ ๋“ฑ์„ ๊ด€๋ฆฌํ•˜๋ฉฐ

  ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋“ค์—๊ฒŒ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

- Bean ์ƒ์„ฑ, ๊ด€๋ฆฌ, ์ œ๊ฑฐ ๋“ฑ์˜ ์—ญํ• ์„ ๋‹ด๋‹น

- BeanFactory์™€ ApplicationContext๋ผ๋Š” 2๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ œ์–ดํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.

 

1. Bean Factory๋ž€?

 

Bean Factory๋Š” ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์ตœ์ƒ์œ„ ์ธํ„ฐํŽ˜์ด์Šค์ด๋ฉฐ  ๋นˆ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์กฐํšŒํ•œ๋‹ค.

getBean ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ๋นˆ์„ ์ธ์Šคํ„ด์Šคํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

 

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


2. Application Context ๋ž€?

 

Application Context๋Š” Bean Factory์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ ์ƒ์†ํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.

 

- BeanFactory ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์ƒ์†๋ฐ›์•„์„œ ์ œ๊ณตํ•œ๋‹ค.
- ์—ฌ๋Ÿฌ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.

- ๋นˆ์˜ ์ƒ์„ฑ, ๊ด€๊ณ„ ์„ค์ • ๋“ฑ์˜ ์ œ์–ด๋ฅผ ์ด๊ด„ํ•˜๋Š” ๊ฒƒ์— ์ดˆ์ 

 

3. ๊ณตํ†ต์ 

 

- ์ œ๊ณต๋œ Bean ์ •์˜ ๋ฐ ๊ตฌ์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ Bean ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌ

- ๋นˆ์˜ ์ƒ์„ฑ , ์ดˆ๊ธฐํ™” ๋ฐ ์†Œ๋ฉธ์„ ํฌํ•จํ•˜์—ฌ ๋นˆ์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ์ฒ˜๋ฆฌ

 

4. ์ฐจ์ด์ 


A. ๊ธฐ๋Šฅ์˜ ์ฐจ์ด

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ๋นˆ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์€ ๋ฌผ๋ก ์ด๊ณ , ์ˆ˜ ๋งŽ์€ ๋ถ€๊ฐ€๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.

 

MessageSouce

- ๋ฉ”์‹œ์ง€์†Œ์Šค๋ฅผ ํ™œ์šฉํ•œ ๊ตญ์ œํ™” ๊ธฐ๋Šฅ

EnvinromentalCapable

- ๋กœ์ปฌ, ๊ฐœ๋ฐœ, ์šด์˜๋“ฑ์„ ๊ตฌ๋ถ„ํ•ด์„œ ์ฒ˜๋ฆฌ

ApplicationPublisher

- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฒคํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

ResouceLoader

- ํŽธ๋ฆฌํ•œ ๋ฆฌ์†Œ์Šค ์กฐํšŒ ๊ธฐ๋Šฅ ์ œ๊ณต

 

B. ๋นˆ ๋กœ๋”ฉ์‹œ์ ์˜ ์ฐจ์ด

Bean Factory : Lazy Loading 

- ํ•„์š” ์‹œ์— ๋นˆ์„ ๋กœ๋”ฉํ•œ๋‹ค.

 

Application Context : Eager Loading

- ๋Ÿฐํƒ€์ž„ ์‹คํ–‰ ์‹œ์— ๋ชจ๋“  ๋นˆ์„ ๋กœ๋”ฉํ•œ๋‹ค.

 

C. ๊ตฌ์„ฑ์˜ ์ฐจ์ด

BeanFactory๋Š” ์ฃผ๋กœ XML ์„ ํ†ตํ•ด ๊ตฌํ˜„๋œ๋‹ค.

Application Context๋Š” XML ์™ธ์—๋„ ์ž๋ฐ” ์ฝ”๋“œ๋‚˜ ์–ด๋…ธํ…Œ์ด์…˜ ๋“ฑ์œผ๋กœ ์„ค์ •์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

5. ๊ฒฐ๋ก 

 

Normally when building most applications in a J2EE-environment, the best option is to use the ApplicationContext
, since it offers all the features of the BeanFactory and adds on to it in terms of features, while also allowing a more declarative approach to use of some functionality, which is generally desirable. 

- ์Šคํ”„๋ง ๊ณต์‹ ๋ฌธ์„œ

 

ApplicationContext๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ApplicationContext๋Š” BeanFactory์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ๊ธฐ๋Šฅ ์ธก๋ฉด์—์„œ ์ถ”๊ฐ€ํ•˜๊ณ  ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋” ์„ ์–ธ์ ์ธ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ”๋žŒ์งํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. 

 

๋‹ค๋งŒ ApplicationContext์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ ์ธ ์ธก๋ฉด์ด ์ค‘์š”ํ•  ๋•Œ๋Š” Bean Factory๊ฐ€ ์„ ํ˜ธ๋  ์ˆ˜ ์žˆ๋‹ค.

 

์ฐธ๊ณ ์ž๋ฃŒ


https://velog.io/@sangwoo0727/BeanFactory%EC%99%80-Application-Context-%EB%B9%88-%EB%A1%9C%EB%94%A9%EC%8B%9C%EC%A0%90%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

BeanFactory์™€ Application Context ๋นˆ ๋กœ๋”ฉ์‹œ์ ์˜ ์ฐจ์ด

์‹œ์ž‘ํ•˜๋ฉฐ IoC ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•˜๋Š” ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” DI์˜ ๊ด€์ ์—์„œ๋Š” ๋นˆ ํŒฉํ† ๋ฆฌ๋ผ๊ณ ๋„ ํ•˜๊ณ , ์ด๋Ÿฐ ๋นˆ ํŒฉํ† ๋ฆฌ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์Šค

velog.io

 

https://www.geeksforgeeks.org/spring-difference-between-beanfactory-and-applicationcontext/

 

Spring - Difference Between BeanFactory and ApplicationContext - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

https://docs.spring.io/spring-framework/docs/1.2.x/reference/beans.html

 

Chapter 3. Beans, BeanFactory and the ApplicationContext

Two of the most fundamental and important packages in Spring are the org.springframework.beans and org.springframework.context packages. Code in these packages provides the basis for Spring's Inversion of Control (alternately called Dependency Injection) f

docs.spring.io