안녕하세요 오늘은 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 진행한다면 해당 디렉토리는 인증 없이 사용할 수 있게 되어 정상적으로 사용할 수 있습니다.
그럼 이상으로 오늘의 포스팅 마치도록 하겠습니다!