크리에이티브 커먼즈 라이선스
Creative Commons License

스프링부트만 믿고 개발에 정진해왔다. 그러다가 시연해야할 떄가 되어 젠킨스를 통해서 개발서버에 빌드-배포된 war 파일을 실행하여 테스트하려고 하니 Thymeleaf template engine에서 template file 을 찾지못하는 문제가 발생했다.

이 문제가 왜 생기는지를 고민하고 검색해봐도 별다른 내용을 찾을 수가 없었다.

스프링부트 튜토리얼을 살펴보다가, 컨트롤러 영역에서 조금 다른 차이점을 찾아냈다.

@Controller
public class TestController {

    @RequestMapping("/test")
    public String test() {
        return "test";
    }
}

문제가 발생하는 화면의 컨트롤러에서는

@Controller
public class TestController {

    @RequestMapping("/test")
    public String test() {
        return "/test";
    }
}

와 같은 형태로 정의가 되어 있는 것이다.

차이를 발견했는가???

저 문제를 찾지 못해서 헤매였다. 1시간여를…. 흙… Orz…

해결방법

return "/test";return "test"; 으로 정의하면 된다.
bootRepackage로 빌드된 애플리케이션 배포본은 경로에 민감하게 반응하는 것으로 보인다.

저 ‘/‘ 때문에 ‘/test’ 에 대한 접근이 아니라 ‘//test’로 처리하기 때문에 나타나는 문제가 아닐까 추측해본다.

저작자 표시
신고
  1. 2017.06.01 21:21

    비밀댓글입니다

    • 바보...
      스프링 부트에 있는 설정을 찾아봐요... 라고 말해주고 싶네요.

      지금 버전(1.5.X.RELEASE 이후)은 모르겠네...

+ Recent posts