해당 게시물은 백기선님의 스프링 프레임워크 핵심 기술 강좌를 정리한 내용 입니다.
역제어 (IoC : Inversion of Control)
- 역제어(IoC)는 의존성 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는게
아니라, 주입 받아 사용하는 방법을 말한다.
- 의존 객체를 직접 만들어 사용하는 예시
BookRepository bookRepository = new BookRepository();
BookService service = new BookService(bookRepository);
- IoC의 예시
@Autowired
BookRepository bookRepository;
BookService service = new BookService(bookRepository);
BookService 타입의 객체가 사용할 bookRepository라는 의존 객체를 직접 만들어 사용하는게 아니라, 주입 받아 사용하는 방법을 말함
빈(Bean)
- 빈(Bean)은 스프링 IoC 컨테이너가 관리 하는 객체이다.
(담고 있는)
- 스프링에서 빈을 등록하여 사용할 때 장점은 다음과 같다.
① 의존성 관리
의존성 주입을 받으려면 빈이 되어야 합니다.
② 객체의 스코프 관리가 용이
스프링 IoC 컨테이너에 등록되는 빈은 기본적으로 싱글톤 scope 으로 등록 됩니다.
(메모리 측면에서 효율적이며 런타임 시 성능 최적화에 유리함.)
③ 라이프 사이클 인터페이스를 제공한다.
@PostConstruct
public void postConstruct(){
System.out.println("================");
System.out.println("Hello");
}
스프링 IoC 컨테이너
- 스프링 IoC 컨테이너는 빈 설정 파일로부터 빈 정의를 읽어 들이고 빈을 생성한 다음, 제공하는 역할을 한다.
- Annotation을 사용하여 POJO 객체를 Bean으로 등록하고 Bean으로 등록된 객체를 주입 받아서 사용한다.
스프링 IoC 컨테이너 관련 인터페이스
1) BeanFactory
- BeanFactory는 스프링 IoC 컨테이너의 최상위에 있는 인터페이스이다.
- IoC 컨테이너 기능 (빈을 생성하고 의존성을 관리) 을 수행한다.
2) ApplicationContext
- ApplicationContext는 BeanFactory를 상속 받은 인터페이스이다.
- ApplicationContext는 BeanFactory의 IoC 컨테이너 기능을 가지고 있으면서도 다음과 같은 추가적인 기능을 가진다.
① 메시지 소스 처리 기능 (i18n) MessageSource
② 이벤트 발행 기능 ApplicationEventPublisher
③ 리소스 로딩 기능 ResourceLoader
④ 프로파일과 프로퍼티 EnvironmentCapable
- ApplicationContext 인터페이스를 구현한 대표적인 클래스
① ClassPathXmlApplicationContext [XML]
② AnnotationConfigApplicationContext [Java]
'Spring > Spring Core' 카테고리의 다른 글
[Section 1] IoC 컨테이너 5부: 빈의 스코프(Scope) (0) | 2020.09.03 |
---|---|
[Section 1] IoC 컨테이너 4부: @Component와 컴포넌트 스캔 (0) | 2020.09.03 |
[Section 1] IoC 컨테이너 3부: @Autowired (0) | 2020.09.03 |
[Section 1] IoC 컨테이너 2부: ApplicationContext와 다양한 빈 설정 방법 (0) | 2020.09.02 |
[Section 0] 스프링 소개 (0) | 2020.09.01 |
댓글