제어의 역전이란 프로그램의 제어 흐름 구조가 역전되는 것을 뜻한다.
일반적으로 프로그래밍을 할 때는 main 함수와 같은 중심 프로그램에서 흐름을 결정하고 객체들을 구성하는 반면에 모든 제어 권한을 특별한 Object에 의해 결정되고 만들어지는 것을 뜻한다.
- Object가 자신이 사용할 Object를 생성하거나 선택하지 않는다.
- Object들은 자신이 어떻게 만들어지고 사용되는지 모른다.
- 모든 Object를 제어하고 생성하는 특별한 Object가 존재한다.
DI(의존성 주입)
Spring Framework에서 사용되는 개념으로 각 class 가 필요로하는 의존관계를 컨테이너가 자동으로 연결해주는 개념이다. 각 class들 사이의 의존 관계를 Bean Definition 정보를 바탕으로 연결해준다.
의존성 주입 방식에는 3가지가 있다.
- Setter Injection - 인자가 없는 생성자나 static factory 메소드가 bean을 객체화하기 위해 호출된 후 bean의 setter 메소드를 호출하여 실체화하는 방식이다.
- Constructor Injection - 생성자를 이용하여 class사이의 의존관계를 연결 한다. 생성자에 파라미터를 지정하기 때문에 객체가 필요한 것을 확실히 알고 Setter를 쓰지 않기 때문에 필드가 불변값으로 지정될 수 있다.
- Method Injection
main 메소드에서 의존 대상 객체를 생성하고 주입하지 않고 객체를 생성하고 의존 객체를 주입하는 클래스를 따로 작성하여 어디에도 의존되지 않게 구성한다. 이 때 그 클래스를 조립기라고 표현한다.
bean - Spring Framework에서 제어권을 바탕으로 object를 만들고 관계를 부여하는 Object. Spring에서 빈은 스프링 컨테이너가 생성하고 관계를 설정하고 사용을 제어하는 object를 말한다.
bean factory - Spring 의 IOC를 담당하는 container. Bean을 등록, 생성, 조회, 관리, 반환한다. Beanfactory는 beanfactory가 구현하는 interface.
application context(Spring container) - bean factory와 기능은 같지만 추가적인 서비스를 제공. BeanFactory를 상속
configuration metadata - application context 나 bean factory가 IOC를 적용하기 위해 사용하는 meta data, bean을 구성하기 위해 사용.
IOC container - IOC 방식으로 bean을 관리. application context or bean factory를 말한다.
Spring Framework - Spring이 제공하는 모든기능.
'SPRING' 카테고리의 다른 글
Container의 개념과 WAS (0) | 2019.06.11 |
---|---|
Dependency Injection(의존성 주입) (0) | 2019.06.11 |
2) PetClinic 예제를 통한 Spring (0) | 2019.06.11 |
1) PetClinic 예제를 통한 Spring (0) | 2019.06.11 |