티스토리 뷰
[문제 상황]
Controller.java에 requestMapping 해둔 URL을 찾지 못함
[원인]
Component Scan을 통한 Bean 등록이 정상적으로 이뤄지지 않음
[조치 내용]
스프링 부트 어플리케이션 실행 시 Component Scan이 이뤄지는데, @ComponentScan 어노테이션을 이용해 scan 시작지점 및 Bean으로 등록하지 않을 클래스를 설정할 수 있다.
@ComponentScan 어노테이션을 이용해 별도로 지정하지 않는 경우, 해당 spring boot project의 시작지점인 Application.java 파일이 위치한 패키지가 기본 값으로 사용된다.
나의 경우 @ComponentScan 어노테이션으로 지정한 내용은 없었고, 패키지 구조가 잘 못 되어있어서 Component Scan이 정상적으로 이뤄질 수 있도록 패키지를 아래와 같이 변경했으며, URL 호출 시 정상 작동을 확인했다.
com
+- myproject
+-Application.java (annotated with @SpringBootApplication)
|
+-controller
+-MainController.java
|
+-service
+-MainService.java
|
+-mapper
+-MainMapper.java
Component Scan은 다음 어노테이션이 붙어있는 클래스를 Bean으로 등록하기 때문에 아래 어노테이션을 용도에 맞게 제대로 명시해두었는지도 확인하면 좋다.
@Repository
@Component
@Service
@Controller
@RestController
@Configuration
추가로, @ComponentScan 어노테이션을 이용해 scan을 설정하는 내용은 프로젝트에 적용 및 상세내용 학습 후 정리할 계획이다.
[참고 사이트]
: http://dveamer.github.io/backend/SpringBootAutoConfiguration.html
: https://sodocumentation.net/spring-boot/topic/9354/package-scanning
'개발 일지' 카테고리의 다른 글
[mariaDB] DB 시작 or 재시작 하기 (0) | 2020.07.17 |
---|---|
[springboot] mapper 관련 파일을 찾지 못할 때 (0) | 2020.07.16 |
[mariaDB] rownum과 같은 역할을 하는 limit (0) | 2020.07.11 |
[mariaDB] 현재 시간 가져오기 (0) | 2020.07.11 |
[mariaDB] 날짜 데이터에서 시, 분, 초가 없을 때 (0) | 2020.07.11 |