Spring Boot 정적 데이터 처리하기

최민길(Gale)·2023년 1월 19일
1

Spring Boot 적용기

목록 보기
16/46

안녕하세요 오늘은 Spring Boot에서 어떻게 정적 데이터에 접근할 수 있는지에 대해 포스팅하도록 하겠습니다.

현재 투다 서비스의 경우 스티커, 기본 프로필, 게시글 속지 등 기본적인 이미지들을 서버 자체적으로 보관하여 제공하고 있습니다. 따라서 기존 PHP 방식에서는 웹 서버에서 디렉토리에 접근하여 이미지 파일을 제공했다면, Spring Boot에서는 Tomcat을 이용하여 통산하기 때문에 다른 방식으로 접근이 필요합니다.

결론적으로 말씀드리자면, 기존 방식에서 약간의 설정만 진행한다면 큰 차이 없이 정적 데이터를 사용할 수 있습니다. Spring Boot의 경우 우선적으로 동적 데이터, 즉 컨트롤러에 요청받은 URI가 존재하는지 확인한 후 없으면 정적 데이터를 루트 디렉토리에서부터 탐색하빈다. Spring Boot의 resources 폴더 안에 static 폴더가 존하는데, 정적 데이터에 접근 시 해당 폴더의 위치를 루트 디렉토리로 설정하여 데이터를 탐색합니다. 하지만 만약 static 폴더를 루트 디렉토리로 설정한 후 Spring Security를 사용할 경우, 모든 루트를 permitAll로 열어줘야 하기 때문에 보안 문제가 발생할 우려가 있습니다.

...
spring.mvc.static-path-pattern=/{대체할 URI}/**
...

이 문제는 application.properties에서 spring.mvc.static-path-pattern을 설정하여 해결할 수 있습니다. 해당 설정을 적용하면 static 폴더에 접근하는 디렉토리가 변경하게 됩니다. 예를 틀어 spring.mvc.static-path-pattern=/test/ 라고 설정을 했다면 기존에 localhost:{port num}/{정적 데이터 디렉토리} 로 접근하는 방식이 localhost:{port num}/test/{정적 데이터 디렉토리}로 바뀌게 됩니다. 이후 Spring Security Config 파일에서 /test/ URI를 permitAll 진행한다면 해당 디렉토리는 인증 없이 사용할 수 있게 되어 정상적으로 사용할 수 있습니다.

그럼 이상으로 오늘의 포스팅 마치도록 하겠습니다!

profile
저는 상황에 맞는 최적의 솔루션을 깊고 정확한 개념의 이해를 통한 다양한 방식으로 해결해오면서 지난 3년 동안 신규 서비스를 20만 회원 서비스로 성장시킨 Software Developer 최민길입니다.

0개의 댓글