스프링 부트: Static 리소스 설정하기
이 부분은 언제나 봐도 혼란스러워 적어 놓는다
1. Dependency는 spring-boot-starter-web 뿐이다.
2. Security 설정과는 아무 상관 없다. 설정이 없으면 다 열리고 있으면 설정되어 있으면 경로를 풀어줘야 접근가능하다.
3. spring-boot-starter-web 하나 설정하고 기동하면
3-1 기본적으로 src/main/resources 폴더 내의 public 이나 static 폴더 안에 있는 파일들은 기본접근 가능하다.
3-2 예시로 http://localhost:8080/base.jpg 라고 검색하면 src/main/resources/public/base.jpg 경로로 검색된다.
4. 임의로 경로 설정을 하고 싶은 경우가 대부분의 목적인데, WebConfig 설정 파일을 이것 때문에 만들 필요는 없다.
4-1 프로젝트 폴더와 상관없이 시스템의 특정 경로에 파일을 넣고 그곳을 접근하고 싶은 경우
4-1-1 예를 들면 내 계정폴더 /Users/philipheur/photos 폴더에 base.jpg 파일을 넣고 http://localhost:8080/base.jpg 접근
#static-locations 에 있는 file: 뒤의 경로는 시스템 절대 경로이다.
spring:
mvc:
static-path-pattern: '/**'
web:
resources:
static-locations: 'file:/Users/philipheur/photos'
4-1-2 http://localhost:8080/photos/base.jpg로 접근하고 싶으면
spring:
mvc:
static-path-pattern: '/photos/**'
web:
resources:
static-locations: 'file:/Users/philipheur/photos'
4-2 용도가 별로 없겠지만 기본값처럼 src/main/resources/ 아래의 특정 경로를 열고 싶은 경우
4-2-1 아래의 경우 http://localhost:8080/photos/base.jpg 검색은 src/main/resources/anything/base.jpg 로 접근 한다.
spring:
mvc:
static-path-pattern: '/photos/**'
web:
resources:
static-locations: 'classpath:/anything'
5. 실무에서 위와 같은 내용을 사용할 일이 거의 없을 것 같지만 간단한 것 만들어보다 보면 필요한 경우가 있을 것 같다.
6. 실무에서는 인터페이스를 통해 여러 타겟으로 파일을 저장하고 URL로 fetch하는 방식이라 이런 걸 볼일은 없을 거 같다.