Spring

IoC, DI

훈지런 2022. 6. 10. 20:56

스프링하면 뭐다? Ioc, DI..  정리해봐야겠다.

 

IoC (Inversion of Control)

흔히들 제어의 역전이라 부른다.
제어의 역전?? 뭐지? 제어의 역전? 대체 뭐지??

쉽게 생각해서 내가 직접 new 키워드를 사용해 객체를 생성하는게 아니고 스프링 컨테이너가 생성해서 관리해준다.
따라서 내가 해야할 생성부터 라이프싸이클 관리를 내가아닌 컨테이너가 한다고해서 제어가 역전됐다고 표현한다.
제어를 컨테이너가 하기떄문에 DI혹은 AOP가 가능하다.

그럼 여기서 말하는 컨테이너가 뭐지?
이 Ioc컨테이너는 오브젝트의 생성, 관계설정, 사용, 제거 등의 작업을 사용자 대신해준다.
여기서 관리되는 오브젝트는 Bean이라고 불리운다.

DI (Dependency Injection)

의존성 주입이다.
의존성 주입은 3가지가 있다.
1. 생성자를 이용한 주입
2. Autowired를 통한 주입
3. Setter를 통한 주입

이중 생성자를 통한 주입을 선호하는데 2번 주입의 가장 큰 단점으로는 순환참조를 예방하지 못 하게되어 순환참조가 발생하면 스택오버플로우가 발생하게된다.

'Spring' 카테고리의 다른 글

Filter, Interceptor, AOP 차이점  (0) 2022.06.06
싱글톤 레지스트리  (0) 2021.09.02
XML - DTD와 Schema  (0) 2021.08.30
DI(Dependency Injection) 과DL(Dependency Lookup)  (0) 2021.08.29