🤯문제의 시작
Boot를 차근차근 공부하기 위해 새롭게 프로젝트를 만들고 진행하면서 간단하게 "Hello World" 띄워보려 하는데
페이지가 안 뜨는 일이 생겼다... 로그를 찍어보니 controller을 찾지 못하고 있는 거 같아 강제로 ConponentScan을 걸어주어서 해결했는데 왜 이런 일이 생긴 걸까..?
😱@SpringBootApplication 이 정상적으로 기능하지 못한 이유
❗Package 구조를 보아야 한다.
시작점인 메인클래스가 위치한 패키지의 하위에 있는 클래스들을 검색하여 Bean으로 등록하기에 하위 패키지에 속하지 않는다면 스프링 컨테이너는 해당 클래스를 Bean으로 등록하지 않게 된다.
Spring에서는 @Controller 혹은 @RestController을 설정해도 XML 파일에 Context:component-scan을 설정하지 않으면 컨테이너가 컨트롤러를 빈으로 등록하지 않는다.
Spring Boot에서는 이 작업을 자동으로 처리해주고 있는데 그럴 수 있는 이유가 바로 시작점 파일 때문이다.
Boot의 시작점은 xxxAplication.java 파일이다 이곳에 바로 @SpringBootApplication 어노테이션이 붙어있다.
이때 패키지 구조가 다르면 @SpringBootApplication 역할을 정상적으로 수행하지 못한다.
그러니 Controller을 인식하지 못하는 문제가 생긴다면 패키지 구조를 꼭 확인해보자
❗강제로 지정
😎패키지 구조를 수정하는 것이 아니라면 임의로 지정해주어야 하는데
이런 식으로 패키지를 잡아주면 기능한다
'Spring Boot API' 카테고리의 다른 글
Exception (0) | 2022.08.16 |
---|---|
문제야 어디 있니~? LogBack (0) | 2022.08.10 |
@Valid 의 종류 알아보기 (0) | 2022.08.10 |
우선 널 알아야겠구나...! 컴포넌트 스캔 (Component Scan)과 Auto Configuration (0) | 2022.08.09 |