인프런 커뮤니티 질문&답변
경로
작성
·
182
0
안녕하세요. 질문이 세가지가 있습니다.
1.
웹 브라우저에다가 http://localhost:8080/something 을 입력한다고 했을때 컨트롤러에 something으로 매핑된 메소드를 실행하고 해당 메소드의 리턴값으로 "something"을 반환받으면 resources/templates 안에 있는 something 파일의 경로를 뷰 리졸버가 반환하는건가요? (이름이 같을 경우 어떻게 동작하는지 궁금해서요.)
2.
classpath이 클래스 파일들이 있는 경로를 나타내는것이라고 알고 있는데요 이 경로를 어디서 확인할수 있나요? 구글링 해보니 main 폴더 안에 java 폴더와 resources 폴더가 classpath으로 잡혀 있다고 하는데 두가지 중에 그럼 우선순위가 어떻게 되는건가요? (먼저 찾게 되는 경로)
3.
웹브라우저에 url을 입력했을때 정적 리소스인지 컨트롤러에 매핑된 메소드를 실행할지 어떻게 결정하는건가요?
.html이나 .js .css이면 정적리소스로 판단하는건가요?
감사합니다.
답변 1
3
안녕하세요. 님, 공식 서포터즈 David입니다.
.
1. 네, 맞습니다. 컨트롤러에 맵핑된 url pattern과 view name은 별개입니다
.
2. Source와 Resource는 용도가 서로 다릅니다.
스프링부트의 디렉토리 구조는 메이븐 표준 디렉토리 레이아웃을 따르고 있습니다.
자바의 클래스 파일(소스)은 /src/main/java 아래에 위치시키고
리소스의 경우 /src/main/resource 아래에 위치시키는 것이 일반적입니다.
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
스프링 부트는 리소스 클래스패스를 아래와 같이 기본적으로 사용하고 있습니다.
.
3. 요청이 들어오면 컨트롤러에 맵핑된 url 목록을 보고 처리해줄 수 있는 핸들러를 찾습니다. 정적 리소스를 요청하면 당연히 컨트롤러에서는 맵핑된 url이 없으므로 정적 리소스 처리를 담당하는 ResourceHttpRequestHandler를 통해 처리됩니다.
.
감사합니다.





