학습목표
- IoC 컨테이너란?
- 빈이란?
스프링 IoC 컨테이너
IoC란 Inversion of Control 으로 Spring에서 나온 용어가 아닙니다. IoC는 프로그램의 제어권을 누가 가져갈것인지에 대한 프로그래밍 패턴이다.
스프링 프레임워크에서의 IoC는 프로그램의 제어권을 프레임워크가 제어하기 때문에, 객체를 생성하고 관계를 설정하는 객체의 관리 역할이 개발자로부터 스프링 컨테이너에게 역전된다는 뜻으로 사용된다.
스프링이 제공하는 IoC 컨테이너를 사용하는 이유는 여러 장점이 있기 때문이다.
먼저 좋은 객체 지향 프로그래밍이란 역할과 구현을 나누는 것이다. 즉, 구현체에 의존하지말고 역할에 의존해야 하는것이다. 역할과 구현을 분리함으로써, 구현 대상의 내부 구조를 알 필요가 없고, 구현 대상 자체를 변경해도 영향이 없는 상태이다.
스프링 프레임워크는 이러한 객체 지향의 원칙을 지키기 위해 IoC/DI 기술로 변경이 쉽고 유연한 확장을 가능하게 해준다. 물론 개발자가 직접 IoC 와 같은 방법으로 코드를 작성할 수 있지만, 스프링 IoC 컨테이너가 제공해주는 의존성 관리, 라이프 사이클 인터페이스와 같은 부가적인 기능을 제공해주기 때문에 편리하다.
빈
- 스프링 IoC 컨테이너가 관리하는 객체를 빈이라고 한다. 여기에 등록된 bean 들은 기본적으로 싱글톤 스코프로 등록이 된다. ( 개발자가 빈을 등록할때 프로토타입으로도 설정해줄 수 있다.)
- 의존성 주입을 하기위해서는 인스턴스를 빈으로 등록해야한다.
- 빈으로 등록하는 방법
- 빈 설정 파일(xml)에 직접 인스턴스를 등록
- 컴포넌트 스캔방식으로 어노테이션 기반으로 등록
- 자바 코드로 등록하는 Java Config
- 스프링 부트에서 사용하는 @SpringBootApplication. 이 어노테이션에는 @ComponentScan 과 @Configuration, @EnableAutoConfiguration 이 포함되어있다.
References.
스프링 프레임워크 핵심 기술 [백기선님 인프런 강좌]
'Spring' 카테고리의 다른 글
의존성 주입(Dependency Injection) 3가지 방법, @Autowired 란? (0) | 2021.07.12 |
---|---|
ApplicationContext와 다양한 빈 설정 방법 (0) | 2021.07.07 |
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 후기 (0) | 2021.05.02 |