Spring Boot에서 외부 static 경로를 사용하는 이유는 여러 가지가 있습니다.
1. 정적 파일 분리: Spring Boot의 기본 설정에 따르면, 정적 파일은 resources/static 디렉토리에 위치해야 합니다. 하지만, 프로젝트 규모가 커질수록 정적 파일의 용량이 커지면서 resources/static 디렉토리가 지저분해질 수 있습니다. 이때, 외부 static 경로를 사용하면, 정적 파일을 따로 분리해서 관리할 수 있습니다.
2. 정적 파일 공유: 여러 개의 Spring Boot 프로젝트가 있다면, 공통으로 사용하는 정적 파일이 있을 수 있습니다. 이때, 정적 파일을 외부 경로에 위치시키면, 여러 프로젝트에서 같은 경로를 사용해 정적 파일을 공유할 수 있습니다.
3. 보안 이슈: Spring Boot 애플리케이션은 내장된 웹 서버를 사용하기 때문에, 애플리케이션의 루트 디렉토리에 위치한 파일들은 외부에서 직접 접근할 수 있습니다. 이때, 애플리케이션 외부에 위치한 디렉토리에 파일을 저장해두면, 보안 이슈를 해결할 수 있습니다.
4. 파일 업로드: Spring Boot 애플리케이션에서 파일 업로드를 구현하려면, 일반적으로 업로드한 파일을 서버의 특정 경로에 저장해야 합니다. 이때, 외부 static 경로를 사용하면, 업로드한 파일을 외부 경로에 저장해 관리할 수 있습니다.
그러면 Spring Boot에서 외부 static 경로를 사용하려면 어떻게 해야 할까요?
Spring Boot application.properties 파일에서 설정해주면 됩니다.
Spring Boot의 application.properties 파일은 애플리케이션의 설정을 관리하는 파일입니다. 이 파일을 통해 여러 가지 설정 값을 지정하고, Spring Boot의 동작 방식을 조정할 수 있습니다. application.properties 파일은 애플리케이션의 클래스 패스 루트 또는 config 서브 디렉토리에 위치 합니다.
Spring Boot의 application.properties 파일에서 spring.resources.static-locations 속성을 다음과 같이 설정합니다.
예를 들어, D:\static 경로의 파일을 사용하고자 한다면, 다음과 같이 설정합니다.
spring.resources.static-locations=file:D:/static/
위 설정을 통해 http://localhost:8080으로 요청이 들어오면, Spring Boot는 D:\static 경로에서 파일을 찾아서 반환합니다.
또한, 여러 개의 경로를 사용하고자 할 때는 ,로 경로를 구분해 설정하면 됩니다. 예를 들어, D:\static1과 D:\static2의 경로를 사용하고자 한다면, 다음과 같이 설정합니다.
spring.resources.static-locations=file:D:/static1/,file:D:/static2/
위와 같이 설정하면, Spring Boot는 D:\static1과 D:\static2 경로에서 파일을 찾아서 반환합니다
만약에, 경로가 프로젝트 하위로 /static/의 경로가 있다면 classpath:/static/을 다음과 같이 설정합니다.
spring.resources.static-locations=classpath:/static/
만약에 위의 내용 처럼, spring.resources.static-locations 속성 사용하였는데 file: 설정에 대해서 적용이 잘 안 된다면 Spring Boot의 버전 문제입니다. 이 경우, spring boot의 버전을 2.6.2으로 변경하고 다음과 같이 합니다.
application.properties 파일에서 spring.resources.static-locations 속성을 spring.web.resources.static-locations로 변경합니다.
spring.web.resources.static-locations=file:D:/static1/,file:D:/static2/, classpath:/static/
'Languages' 카테고리의 다른 글
Android에서 HTTP URL 허용 설정 (0) | 2023.04.04 |
---|---|
Spring Boot과 JPA에 대해서 알아 봅니다. (0) | 2023.04.04 |
spring boot과 JPA 에서 InvalidDataAccessApiUsageException 에러 해결하기 (0) | 2023.04.04 |
spring boot 실행하는 방법과 외부 properties 설정 파일 읽기 (0) | 2023.04.04 |
서버에서 spring boot 애플리케이션 실행할 때 옵션과 실행 방법 (0) | 2023.04.04 |