본문 바로가기
Spring/Spring boot

[SpringBoot] 스프링부트 IoC - 프로젝트 패키지 생성 오류 찾기

by s_hoonee 2023. 2. 11.
반응형

스프링에선 프로그램에 대한 제어 흐름을 스프링 컨테이너가 가지고 있다. 

프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC) 이라고 부른다.

 

만약 ClassA의 Start() 메소드 안에 있는 지역변수 a를 ClassB에 있는 메소드가 사용하려면 어떻게 해야 하는 가?

아마 우리는 new 생성자로 해당 클래스 변수를 heap영역에 불러오고 사용할 것이다. 그리고 이것은 스택에서 생성된다.

이 처럼 스택에서 만든 모든 생성자, 메소드 등 모든 객체는 해당 지역변수가 관리하기 때문에 이 지역변수는 다른 스택에서 공유해서 사용할 수 없다. 뭐 이것을 리턴값을 만들어서 사용하거나 전역변수를 쓸 수도 있다. 그러나 new로 객체를 만들고 소멸하기를 반복하는 것은 관리의 효율성이 떨어질 것이다. 그래서 스프링에서는 스프링 컨테이너에서 a변수를 관리하게 하고 우리가 필요할 때 가져다가 쓰는 것을 제어의 역전(IoC)라고 한다.  

★여기서 모든 것을 관리해 주는 것이 아니라 특정 어노테이션이 붙은 아이들을 관리해준다 ★

 

이때 스프링은 컴포넌트 스캔을 하는데 

컴포넌트 스캔이란 ? 특정 위치 밑의 모든 파일을 스캔하여 필요한 것들을 메모리에 로드한다.

이때 특정 위치가 처음 패키지를 만든 이름이다. 

ex) com.prj.hoony 로 만들어졌는데

com.prj.LEE로 패키지를 만들어 사용한다면 이 파일 밑의 파일은 스캔하지 않는다.

즉 처음 만들어진 패키지 밑으로 파일을 만들자 !