새로운 정적 리소스 경로 설정하기

Legday_Dev·2023년 9월 14일
0

Spring

목록 보기
11/14
post-thumbnail

프로젝트 외부에 있는 upload 폴더에 저장되있는 리소스들을 JSP 에 가져와 쓰다보면 경로를 인식 못하는 경우가 있다. 이럴 때 WebConfig 에 설정을 추가해주면 된다 !!

따로 경로를 설정하지 않을 때


  • 프로젝트 외부에 있는 사진에 경로가 저장된 image 엔터티의 리소스를 jsp 파일에 추가하고 서버랜더링을 해보면 리소스를 인식하지 못한다.
    <!--게시물컨섹션-->
    <section id="tab-content">
    <!-- 생략 ... -->
        <!--아이템들-->
        <c:forEach var="image" items="${user.images}">
            <div class="img-box">
                <a href=""> <img src="${image.postImageUrl}" /></a>
                <div class="comment">
                    <a href="#" class=""> <i class="fas fa-heart"></i><span>0</span>
                    </a>
                </div>
            </div>
        </c:forEach>
    <!-- 생략 ... -->
    </section>
  • upload 파일까지는 인식하지만 그 전에 있는 외부 경로를 인식하지 못한다.

WebConfig 설정


  • 스프링에서 제공하는 WebMvcConfigurer 인터페이스를 구체화한 WebConfig 클래스를 만든다.
  • 우선 application.yml 파일에 외부업로드 파일경로를 가져와서 uploadFolder 에 저장한다.
    • applicadtion.yml 파일에 file.path 옵션에 upload 폴더 경로를 지정해뒀다.
    • @Value 어노테이션은 lombok 이 아닌 스프링에서 지원하는 어노테이션이다
  • addResourceLocations("경로") : JSP 파일에서 지정한 경로가 나오면 낚아채서 소유권을 가진다
  • addResourceLocations("경로") : 경로를 실행 시킨다.
  • setCachePeriod(second) : 캐싱 시간(초)을 지정한다.
  • resourceChain(boolean) : true 가 되면 활성화 된다.
@Configuration
public class WebMvcConfig implements WebMvcConfigurer { // web 설정파일

    @Value("${file.path}")
    private String uploadFolder;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        WebMvcConfigurer.super.addResourceHandlers(registry);

        registry.addResourceHandler("/upload/**") 
                .addResourceLocations("file:///"+uploadFolder)
                .setCachePeriod(60*10*6)
                .resourceChain(true)
                .addResolver(new PathResourceResolver());
    }
}

필요할 때마다 복사해서 쓰는게 좋을 꺼 같다 !!! addResourceLocations,addResourceLocations 부분만 수정해주면 된다 !!

profile
백엔드개발자

0개의 댓글