IoC(Inversion of Control)는 SIngleton 패턴과 레퍼런스 변수 관리를 위해 Spring이 사용하는 구조이다.
클래스 A의 메서드 내에서 new 연산자로 생성한 클래스B는 지역변수가 관리하며, 메서드가 호출되고 스택에 올라오면서 heap에 생성된다.
이후 메소드가 종료될때 메모리에서 사라지며, new 연산자로 생성된 클래스 B는 다른 위치에서 더이상 참조할수 없게 된다. 또는 복잡한 로직을 필요로 한다.
이는 공간적 복잡도나 커플링 관계에도 영향을 미칠 수 있으니, Spring은 이를 Spring Container에서 자동적, 통합적으로 관리하기 위해 IoC를 채택하였다.
컴포넌트 스캔 또는 IoC는 특정 패키지 이하를 모두 스캔하여 메모리에 로드하여 싱글톤 패턴으로 관리한다. 이때, 스캔영역의 기준은 src/main/java/이하 프로젝트 패키지로, 다른곳에 코드를 작성해둔다면 컴포넌트 스캔은 작동하지 않는다.
'Today I Learned > Spring Boot' 카테고리의 다른 글
스프링 필터 추가 (0) | 2022.04.21 |
---|---|
[Security] Authentication 객체 (0) | 2022.04.18 |
web.xml (0) | 2022.04.12 |
스프링의 동작원리 (0) | 2022.04.12 |
JPA의 개념 (0) | 2022.04.10 |