728x90
1. Inversion Of Control (IOC)
- 프로그램의 흐름 (객체의 생성, 생명주기)을 개발자가 직접 제어하는 것이 아닌 외부에서 제어 및 관리를 해주는 것을 말한다.
2. IOC Container
- 스프링에서는 Application을 구성하는 Bean을 관리하기 위하여 IOC개념을 이용, Spring IOC Container가 객체를 관리함으로써 DI(의존성 주입), AOP(관점 지향 프로그래밍)이 가능해지게 된다.
- Spring IOC Container가 주도권을 가져감으로써 객체의 관리, 의존 관계의 결정 및 설정 등의 역할을 맡게 된다.
3. Dependency Injection (DI)
- 객체의 의존성을 개발자가 아닌 외부 (IOC Container)에서 주입함으로써 객체간의 결합을 약하게 해주며 유지보수가 좋은 코드를 만들어준다.
- 스프링에서는 스프링 컨테이너가 각 클래스의 의존관계를 Bean설정 정보를 바탕으로 자동으로 결정 및 연결해준다.
4. 강한 결합과 느슨한 결합
- 강한 결합 : 객체 내부에서 다른 객체를 new를 통해 생성하는 것을 강한 결합도를 갖는다고 한다.
- 느슨한 결합 :외부에서 생성된 객체를 인터페이스를 통해 주입받는다. 외부에서 객체를 주입받게 되면 런타임시에 의존관계가 결정, 유연한 구조를 가진다.
5. 의존성 주입의 방법
- 생성자 주입
- 생성자를 이용하여 의존성을 주입하는 방법
- 스프링에서 가장 권장하는 방법
- 필드 주입
- 일반적이고 쉬운 방법이지만 Runtime시에 순환참조 문제가 발생할 수 있다.
- Setter 주입
- 생성할 때 의존성을 주입하는 것이 아닌 원하는 때에 함수를 호출, 의존성을 주입할 수 있다.
'Back-End > Study' 카테고리의 다른 글
[Jenkins] Github연동 (0) | 2023.08.10 |
---|---|
[Jenkins] 설치 및 설정 (0) | 2023.08.10 |
Spring과 Spring Boot (0) | 2022.11.24 |
[Mac OS] Redis 설치 (0) | 2022.09.29 |
[Mac M2] UTM위에 우분투 설치 (0) | 2022.09.25 |