일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 예약
- 네이티브쿼리
- 외부키
- appspec
- EC2
- 메소드명
- WeNews
- 2 > /dev/null
- Query
- ㅔㄴ션
- 적용우선순위
- appspec.yml
- 포트
- subquery
- ubuntu
- 컨테이너실행
- foreignkey
- 참조키
- 추후정리
- 커밋메세지수정
- querydsl
- 메세지수정
- AuthenticationEntryPoint
- application.yml
- 서브쿼리
- docker명령어
- MySQL
- 검색
- 테스트
- 테스트메소드
Archives
- Today
- Total
제뉴어리의 모든것
외부의 정적 리소스 요청시 Spring의 WebMvcConfigurer를 이용한 처리 방법 본문
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로 이미지를 요청할 수 있게 되는 것이다.
'Spring Boot' 카테고리의 다른 글
Spring Boot 프로젝트 Build시에 Test Skip 하는 방 (0) | 2023.04.06 |
---|---|
application-dev.yml 에 여러 yml 파일 추가시키기 (0) | 2022.11.15 |
application.yml 을 공통 내용과 환경별 파일로 나누기 (0) | 2022.11.04 |
AOP 복습 및 실제 구현 내용 (0) | 2022.10.31 |
ant pattern, * vs ** (0) | 2022.10.19 |