ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링부트-mustache 연동시 404에러 뜰 때.
    Spring boot 2019. 12. 3. 16:09

    1.현상

    aws 환경 구축을 완료하고 본격적으로 게시판을 만들어 보려고 박재정님의 유투브 강의를 참고하여 게시판을 만드는 중에 에러가 발생했다.
    컨트롤러에 맵핑된 /helloworld2로 url입력시 index.html을 return하는 간단한 구조

     

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @Controller
    @AllArgsConstructor
    public class WebController {
     
        private PostsService postsService;
     
        @GetMapping("/helloworld2")
        public String welcome2() {
            return "index";
        }
    }
    cs

     

    뭐 에러 날 게 없다 생각 했는데 404에러가 발생.
    index.html 파일을 혹시나 해서 src/main/resources 하위의 templates 폴더와 static 폴더 둘다 넣어줘 봤지만 그래도 에러 발생.
    혹시나해서 소스 코드를 수정해 보았다

     

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @Controller
    @AllArgsConstructor
    public class WebController {
     
        private PostsService postsService;
     
        @GetMapping("/helloworld2")
        public String welcome2() {
            return "index.html";
        }
    }
     
    cs

     

    된다..!
    그런데 강의에서는 분명 return "index"만 해도 됐었고 경로도 나랑 뭔가 다르다. 해서 구글링 해본결과

    2.해결 방법

    application.yml(application.properties) 파일의 mustache 부분에 아래와 같이 소스를 추가

     

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    spring:
      profiles:
        active: local # 기본 환경 선택
      jpa:
        properties:
          hibernate:
            dialect: org.hibernate.dialect.MySQL5InnoDBDialect
      mustache:
        suffix: .html
        prefix: classpath:/static/
    cs

    3.이유

    해당 영상 유튜브 박재정님의 댓글을 보니 spring boot의 경우 템플릿 엔진이 바라보는 기본 디렉토리는 templates,
    mustache의 suffix 기본은 mustache라고 한다(example.mustache)

     

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @Controller
    @AllArgsConstructor
    public class WebController {
     
        private PostsService postsService;
     
        @GetMapping("/helloworld2")
        public String welcome2() {
            return "index";
        }
    }
    cs

    해당 코드를 보면 index에 suffix mustache가 붙어 index.mustache에 해당하는 뷰가 리턴 되는 것
    하지만 내 프로젝트에 그런 파일은 없으니.. 404 에러가 발생 했던 것이다.
    그래서 classpath를 /static/으로 변경해주고 suffix를 html으로 변경 해주면 아주 아주 잘된다

    'Spring boot' 카테고리의 다른 글

    Spring Boot - OAuth2.0 password 방식으로 간단한 인증서버 구현하기  (0) 2020.01.09
    JWT  (0) 2019.12.26
    OAuth2.0  (0) 2019.12.24

    댓글

Designed by Tistory.