스프링에서 개발을 할때 패키지명을 일반적으로 com.example.xxx.controller, com.example.xxx.service 처럼
최초에 프로젝트를 생성할때 com.example.xxx 까지 지정해 둔다.
위 사진을 보면 com.cos.blog가 기본 패키지명인데, com.costest라고 마음대로 패키지명을 설정해두었다.
이렇게 패키지명을 설정하면 안되는 이유를 알아보겠다.
그 이유를 알기 위해서는 스프링의 특징 중 한가지에 대해 알아야하는데,
IoC(제어의 역전)의 특징을 가지고 있다는 것이다.
IoC (Inversion of Control) 란?
사용자가 객체를 new XX()해서 생성하는게 아니라 스프링에서 객체를 생성해서 관리하는 것이다.
IoC를 이용해서 관리하는 이유?
1. 싱글톤을 이용해 객체를 한개만 생성하게 만들어 메모리를 절약하기 위해서 이다.
2. 레퍼런스 변수를 스프링에서 관리하기 위해서이다.
이제 이러한 이유로 제어의 역전을 하기위해 스프링은 컴포넌트 스캔을 실시한다.
컴포넌트 스캔이린?
특정 패키지를 스캔해 필요한 것들(특정 어노테이션)을 메모리에 로드하는 과정인다.
이때 특정 패키지의 기준은 처음에 패키지명을 설정한 com.example.xxx를 기준으로 잡기 때문에 마음대로 패키지명을 변경하면 컴포넌트 스캔을 하지못해서 스프링에서 객체를 관리하지 못하게된다.
그래서 패키지명을 마음대로 지정하면 안된다.
참고자료
https://youtu.be/n33ao_cbhsU?si=topzOlMXD93nH4Fi