📌 Spring에서 IoC
Spring 프레임워크는 IoC방식을 지원한다.
🤔 IoC (Inversion of Control); 제어의 역행
- 개발자가 객체의 생성과 관리를 담당하지 않고 프레임워크나 컨테이너에게 객체의 생성 및 관리를 위임하는 방식이다.
IoC의 장점
- 객체 간의 관계가 느슨하게 연결된다. 즉, 의존성에서 결합도가 낮아진다.
Spring의 Container는 객체의 LifeCycle과 의존성주입(DI)를 통해 IoC를 구현한다.
쉽게 말해, 필요할 때 만들지말고 만들어놓고 필요할 때 가져다 쓴다.
IoC 유형
- DL(Dependency Lookup)
- getBean()같은 메소드처럼 의존성을 직접 검색하는 방법
- DI(Dependency Injection) - 의존성 주입
- Spring Container가 직접 의존 구조를 Object에 설정 할 수 있도록 지정해 주는 방식
- 컨테이너에서 객체를 생성(bean 객체)하여 의존 관계에 있는 다른 객체에 bean객체를 주입
- Object가 컨네이너의 존재 여부를 알 필요가 없다.
📌 Spring Container
(= IoC Container와 같은말)
Container의 역할
- 객체의 생성, 사용, 소멸에 해당하는 라이프사이클을 관리
- Dependency 객체 제공
- Thread 관리
- Application에 필요한 환경 제공
Container의 필요성
- 서비스 객체를 사용하기 위해 Factory 또는 Singleton 패턴을 직접 구현하지 않아도 컨테이너가 대신 해준다.
- 비즈니스 로직(sql, 치환변수에 값 넣기, Resultset결과를 어디에 담을 것인지 등)외에 부가적인 기능들에 대해서는 독립적으로 관리한다.
- 서비스 look up이나 Configuration에 대한 일관성을 갖기 위함이다.