관리 메뉴

제뉴어리의 모든것

외부의 정적 리소스 요청시 Spring의 WebMvcConfigurer를 이용한 처리 방법 본문

Spring Boot

외부의 정적 리소스 요청시 Spring의 WebMvcConfigurer를 이용한 처리 방법

제뉴어리맨 2024. 5. 8. 19:58

WebMvcConfigurer 란

Spring 프레임워크의 인터페이스로써 Spring MVC 처리에 대한 구성 설정을 가능하게 해주는 인터페이스이다.

 

목적

클라이언트로부터 전송받아 저장한 이미지를 외부에서 url로 요청할 경우, 해당 이미지를 전송해주기 위함

 

사전 필요과정

  • 클라이언트로 부터 이미지 전송을 받아 이미지를 특정 공간에 저장한다. 
  • 이미지를 저장할때, DB에 해당 이미지가 저장된 경로를 필드에 저장한다 (전체 경로일 필요 없다. 정적 리소스를 저장할 root 경로 이후의 경로만 저장해둔다)

처리 방법

  • WebMvcConfigurer 를 구현한 클래스 생성
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void  addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/images/diary/**") // 웹에서 접근할 url 경로
                .addResourceLocations("file:/C:/emotion-diary/images/diary/");// 실제 파일이 존재하는 경로
    }
}

 

 

  • 클라이언트에서
    http://[Spring Boot앱이 구동중인 서버 도메인].com:8080/image/diary/3/벚꽃사진.jpeg
    과 같이 spring boot 백엔드 서버로 요청을 한다

  • WebMvcConfigurer 은 /images/diary/ 라고 들어오는 요청에 대해서는 file:/C:/emotion-diary/images/diary/ 의 경로에 매핑하여 취급한다.

  • 만약 http://localhost:8080/images/diary/3/벚꽃사진.jpeg 이라는 요청이 들어온다면,
    file:/C:/emotion-diary/images/diary/3/벚꽃사진.jpeg 로 매핑이 되는것이고, 
    실제 백엔드 서버의 C:/emotion-diary/images/diary/3/ 경로 안에는 벚꽃사진.jpeg라는 파일이 존재해야 하는것이다.

  • 그리고 DB에는 /images/diary/3/벚꽃사진.jpeg 라는 경로가 저장되어 있으면 되고, 이 정보를 클라이언트에게 알려주면 위와 같이 url로 이미지를 요청할 수 있게 되는 것이다.