상세 컨텐츠

본문 제목

[토비의 스프링] 스프링 IoC 파해치기 - 빈, 빈 팩토리, 애플리케이션 컨텍스트

SPRING/토비의 스프링

by 개발하는 정복자 2022. 7. 20. 15:47

본문

 

 

[세트] 토비의 스프링 3.1 (총2권) - YES24

『토비의 스프링 3.1』은 스프링을 처음 접하거나 스프링을 경험했지만 스프링이 어렵게 느껴지는 개발자부터 스프링을 활용한 아키텍처를 설계하고 프레임워크를 개발하려고 하는 아키텍트에

www.yes24.com


IoC 공부 전 꼭 알아야하는 팩토리

이 포스트를 쉽게 이해하려면 위 포스트를 보고 오시는걸 추천합니다‼️


  🌱스프링 IoC 관련 필수 용어 정리  

 

  빈(bean)   🫘 

스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트.

 

  빈 팩토리(bean factory)  🏭

빈의 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트.
보통은 빈 팩토리보다 이를 확장한 애플리케이션 컨텍스트를 주로 사용한다.

 

  애플리케이션 컨텍스트(application context)  

IoC 방식을 따라 만들어진 일종의 빈 팩토리이다. 

 

👉🏾 빈 팩토리 vs 애플리케이션 컨텍스트

빈 팩토리를 말할 때는 빈을 생성하고 관계를 설정하는 IoC의 기본 기능에 초점을 둔것이고, 애플리케이션 컨텍스트를 말할 때는 애플리케이션 전반에 걸쳐 모든 구성요소의 제어 작업을 담당하는 IoC 엔진이라는 의미가 부각된다. 


 

📮 어플리케이션 컨텍스트

 

별도의 정보를 참고해서 빈(오브젝트)의 생성, 관계설정 등의 제어 작업을 총괄한다.

 

👉🏾 빈 팩토리와의 관계 

애플리케이션 컨텍스트는 ApplicationContext라는 인터페이스를 구현하는데, ApplicationContext는 빈 팩토리가 구현하는 BeanFactory 인터페이스를 상속했다. 그래서 애플리케이션 컨택스트는 일종의 빈 팩토리인 셈이다.

 

👉🏾 동작방식

전 시간 봤던 AFactory 오브젝트처럼 직접 오브젝트를 생성하고 관계를 맺어주는 코드 대신, 그런 생성정보와 연관관계 정보를 별도의 설정정보를 통해 얻는다.

 

✅ 스프링 컨텍스트를 사용하는 이유

전 시간 AFactory 오브젝트에서 IoC를 적용했었다. 그런데 굳이 애플리케이션 컨텍스트를 사용하는 이유는 무엇일까?

 

1. 클라이언트는 구체적인 팩토리 클래스를 알 필요가 없다

- 오브젝트 팩토리가 아무리 많아져도 이를 알아야 하거나 직접 사용할 필요가 없다. 
- 일관된 방식으로 원하는 오브젝트를 가져올 수 있다.
- 단순한 방법으로 애플리케이션 컨텍스트가 사용할 설정정보를 만들 수 있다.

 

2. 종합 IoC 서비스를 제공해준다

단순 오브젝트 생성과 관계설정만 하진 않는다.
오브젝트가 만들어지는 방식, 시점과 전략을 다르게 가져가거나 이에 부가적인 자동생성,
오브젝트에 대한 후처리 등 다양한 기능을 제공한다.

 

3. 빈을 검색하는 다양한 방법을 제공한다

애플리케이션 컨텍스트의 getBean() 메소드는 빈의 이름을 이용해 빈을 찾아준다.
타입만으로 빈을 검색하거나 특별한 애노테이션 설정이 되어 있는 빈을 찾을 수도 있다.

 

 

 

관련글 더보기

댓글 영역