IoC(Inversion of Control)란?
: '애플리케이션 흐름의 주도권을 Spring이 갖는다'를 의미(제어의 역전)
: 개발자가 가지던 제어권을 외부에서 갖는다는 것을 의미(예를들면 생성자명이 변경될 경우 개발자가 일일이 변경이 필요한 것은 개발자가 제어권을 가진다는 것, 이를 개발자가 고치는 것이 아닌 외부에서 자동으로 고쳐주는 것을 외부에서 제어권을 가진다고 함. 이 때 대표적으로 외부에서 제어권을 가지도록 하게 되는 것이 DI)
: Library는 흐름 주도권이 개발자에게, Framework는 흐름 주도권이 Framewok에 존재한다고 했을 때 애플리케이션 흐름의 주도권이 뒤바뀐 것을 말함
Ex)
Java 콘솔 애플리케이션 일반적인 제어권
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
: 실행을 위해 main 메서드가 있어야 하며 메서드 호출 이후 System 클래스를 통해 println()을 호출
* main() 메서드처럼 애플리케이션 시작 지점을 엔트리포인트라 부름
Java 웹 애플리케이션 IoC 적용
: 서블릿 컨테이너의 경우 서블릿 사양에 맞게 작성된 서블릿 클래스만 존재하며 별도의 main() 메서드가 존재하지 않음
>> 클라이언트 요청이 들어올 때마다 서블릿 컨테이너 내의 컨테이너 로직이 서블릿을 직접 실행시켜주기 때문
즉, 서블릿 컨테이너가 서블릿을 제어하고 있기 때문에 애플리케이션의 주도권은 서블릿 컨테이너가 가짐
: Spring에 IoC 개념 적용은 DI로 인해 적용됨
'공부 자료 > Spring' 카테고리의 다른 글
[Spring Core] DI (Dependency Injection) (0) | 2022.10.11 |
---|---|
[Spring Core] PSA (Portable Service Abstraction) (0) | 2022.10.11 |
[Spring Core] POJO(Plain Old Java Object) (0) | 2022.10.11 |
[Spring Core] Spring Framework 소개 (0) | 2022.10.11 |
[Spring Core] Framework & Library (0) | 2022.10.11 |