Spring Boot API

@SpringBootApplication 이 정상적으로 기능하지 못한 이유

NEWDODORIPYO 2022. 8. 9. 13:23

🤯문제의 시작 

Boot를 차근차근 공부하기 위해 새롭게 프로젝트를 만들고 진행하면서 간단하게 "Hello World" 띄워보려 하는데 

페이지가 안 뜨는 일이 생겼다... 로그를 찍어보니 controller을 찾지 못하고 있는 거 같아 강제로 ConponentScan을 걸어주어서 해결했는데 왜 이런 일이 생긴 걸까..?

 

 

😱@SpringBootApplication 이 정상적으로 기능하지 못한 이유

 

❗Package 구조를 보아야 한다.

시작점인 메인클래스가 위치한 패키지의 하위에 있는 클래스들을 검색하여 Bean으로 등록하기에 하위 패키지에 속하지 않는다면 스프링 컨테이너는 해당 클래스를 Bean으로 등록하지 않게 된다.

Spring에서는 @Controller 혹은 @RestController을 설정해도 XML 파일에 Context:component-scan을 설정하지 않으면 컨테이너가 컨트롤러를 빈으로 등록하지 않는다.

Spring Boot에서는 이 작업을 자동으로 처리해주고 있는데 그럴 수 있는 이유가 바로 시작점 파일 때문이다.

Boot의 시작점은 xxxAplication.java 파일이다 이곳에 바로 @SpringBootApplication 어노테이션이 붙어있다.

이때 패키지 구조가 다르면 @SpringBootApplication 역할을 정상적으로 수행하지 못한다.

그러니 Controller을 인식하지 못하는 문제가 생긴다면 패키지 구조를 꼭 확인해보자

 

❗강제로 지정 

😎패키지 구조를 수정하는 것이 아니라면 임의로 지정해주어야 하는데

이런 식으로 패키지를 잡아주면 기능한다

 

🎈참조:https://cceeun.tistory.com/183