본문 바로가기

카테고리 없음

[Spring Boot] 프로젝트 생성 후 컨트롤러와 맵핑이 안될때 확인해야할 것들.

Spring Framework를 한 달 정도 사용 후 Spring Boot로 넘어와 연습 프로젝트를 진행하는 중에 처음으로 프로젝트를 만들고 "Hello World"를 띄우기 위해 초기설정을 마치고 서버를 실행시켰으나 Controller에 설정해 준 Mapping URL을 읽지 못하는 문제가 발생하였다.

 

아래 Controller에 적용된 맵핑 코드이다.

@Controller
@Log4j2
public class LoginController {

    @GetMapping("/hello")
    public void hello(Model model){
        log.info("hello..........");
        model.addAttribute("msg", "Hello World");
    }

}

 

1. @Controller Annotataion 확인 : Controller 파일을 작성후에 Annotation인 @Controller를 넣어줘야지 컨트롤러 java 파일로 인식이 된다.

 

2. 위에 1번째 방법이 확인했다면 두번째로 확인해야 할 부분은 controller의 파일의 경로이다. Controller의 경로는 항상 xxxApplication.java 파일(아래 그림에서는 OAuthApplication.java) 패키지 하위에 위치해야 하지만 나는 아래와 같이 상위에 위치시켰기 때문에 컨트롤러를 불러오지 못하였다.

 

잘못 설정된 controller 경로

 

Controller(아래 그림에서는 LoginController)를 xxxxApplication.java 파일이 위치한 패키지 하위에 위치시켜야 한다. 이유는 스프링 Boot가 시작되는 시작점의 기준이 xxxxApplication.java 파일의 위치이기 때문이다. 

 

알맞게 설정된 controller 경로

 

만약 프로젝트 구조상 하위에 위치시키지 않고 싶다면 xxxxApplication.java 파일에 스프링의 기본 문법인 @ComponentScan annotation을 이용하여 Spring Boot 프로젝트 구동시 해당 패키지를 스캔하여 Container에 bean을 올리는 방법을 이용하여도 된다. (아래 그림 참고)

 

@ComponentScan을 이용한 컨트롤러 bean 등록