♪ 학습 내용
IoC / DI / 컨테이너 / 스프링으로의 전환
* 제어의 역전 IoC ( Inversion of Control )
기존에는 클라이언트가 스스로 필요한 구현객체를 생성하고 연결하고 실행.
즉, 구현 객체가 프로그램 제어 흐름을 조종
이제는 AppConfig가 등장하면서 제어의 흐름을 가져갔다. 클라이언트 객체는 열심히 실행만 할 뿐이다.
이처럼 제어 흐름을 직접 제어하는 것이 아닌, 외부에서 관리하는 것을 제어의 역전.
IoC라고 한다
* 의존관계 주입 DI ( Dependency Injection )
- 정적인 클래스 의존 관계
클래스가 사용하는 코드만 보고도 의존관계를 쉽게 파악 가능
실행 없이 분석 가능.
단, 실제 어떤 구현 객체가 주입될 지는 알 수 없다
- 동적인 객체 의존 관계
실행 시점에 생성된 객체 인스턴스의 참조가 연결된 의존관계.
실행 시점에 클라이언트와 서버의 실제 의존관계가 연결
→ 의존관계 주입
의존관계 주입을 이용하면 정적 클래스 의존관계 변경 없이 동적 객체 의존관계 변경 가능.
* 컨테이너
컨테이너는 객체를 생성하고 관리하며 의존관계를 연결해준다
ex) AppConfig가 의존관계를 집어 넣어준다 → DI 컨테이너 (또는 IoC 컨테이너)
* 스프링으로 전환
여태까지 모든 개발을 순수한 자바 코드로 진행했지만 여기서부터 스프링을 사용했다.
@Configuration 을 붙여주면 설정을 구성한다는 것
@Bean 을 각 메서드에 붙여주어 스프링 컨테이너에 스프링 빈으로 등록..!
ApplicationContext 가 바로 스프링 컨테이너라고 보면 된다. 모든 시작은 여기서부터.
applicationContext가 모든 것을 관리한다
AppConfig에 있는 설정 정보를 스프링이 스프링 컨테이너에 객체 생성하여 집어넣고 관리
.getBean을 통해 스프링 컨테이너에서 객체를 찾아온다
* 정리
@Configuration 이 붙은 AppConfig를 설정 정보로 사용
@Bean붙은 메서드 모두 호출 한 후에 반환 된 객체를 스프링 컨테이너에 등록
이때 등록된 객체를 스프링 빈
스프링 빈의 이름 == @Bean 메서드의 이름
applicationContext.getBean()을 이용해 스프링 빈을 찾을 수 있다.
♪ 다음 학습 내용
AppConfig 보다도 스프링 컨테이너를 사용하는 이유
스프링 빈과 스프링 컨테이너에 대하여
'Dev > Spring' 카테고리의 다른 글
[Spring 기본] 스프링 컨테이너와 빈 (2) (0) | 2022.11.06 |
---|---|
[Spring 기본] 스프링 컨테이너와 빈 (1) (0) | 2022.11.05 |
[Spring 기본] 객체 지향 원리 적용 (3) (0) | 2022.11.01 |
[Spring 기본] 객체 지향 원리 적용 (2) (0) | 2022.10.31 |
[Spring 기본] 객체 지향 원리 적용 (1) (0) | 2022.10.30 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!