URL을 기준으로 리소스를 읽어들이고, 자원에 접근하는 방식에 따라 Prefix 를 붙인다.
File System의 경우 file: Prefix를 이용
Http 를 이용해 자원에 접근할 경우 http: Prefix를 이용
FTP 를 이용해 자원에 접근할 경우 ftp: Prefix를 이용
ClassPathResource
Class Loader를 사용해 classpath 를 기준으로 리소스를 읽어들이는 방식
FileSystemResource
FileSystemResourceLoader 를 사용해 File System에서 리소스를 읽어들이는 방식
ServletContextResource
웹 어플리케이션 루트에서 상대 경로로 리소스를 찾는다. Spring Boot 에서 지원하는 내장형 톰캣에서는 기본 Context Path가 지정 돼 있지 않다.
코드를 통해 확인하기
Resource 객체 보내기
ClassPathResource 를 이용해 /src/test/resource 에 저장된 testFile.txt 파일을 가져와 서버쪽으로 보내는 코드를 작성했다.
@Test publicvoiduploadTest()throws IOException { // ClassPathResource 를 이용해 testFile.txt 파일을 읽어온다. ClassPathResourceresource=newClassPathResource("testFile.txt"); Filefile= resource.getFile();
// 파일을 보내기 위해 Http Header Content Type을 MULTIPART_FORM_DATA 로 설정해준다. HttpHeadersheaders=newHttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA);
// HttpEntity 에 Resource 객체를 갖고 있는 MultiValueMap 객체를 넣어준다. HttpEntity<MultiValueMap<String, Object>> httpEntity = newHttpEntity(multiValueMap, headers);