본문 바로가기
  • 실행력이 모든걸 결정한다
Spring Series/Spring Framework

[Spring] 리소스 추상화

by 김코더 김주역 2022. 5. 1.
반응형

1. 리소스 추상화란?

외부 파일을 가져오는 방법은 다양하다. 예를 들어, 개발 시스템의 특정 폴더에 있는 파일, HTTP 또는 FTP 프로토콜로 접근할 수 있는 웹상의 파일, Classpath에 있는 파일 등이 있다.

이렇게 리소스가 저장되는 방식은 다양한데, 다른 방식으로 저장되어 있는 리소스 파일을 가져올 때마다 자바 소스코드를 바꾸는 것은 좋지 않다.

그래서 스프링은 리소스 추상화를 위해 Resource라는 추상화 인터페이스를 정의한다. 

 

<Resource.java>

public interface Resource extends InputStreamSource {
    boolean exists();

    boolean isOpen();

    URL getURL() throws IOException;

    File getFile() throws IOException;

    Resource createRelative(String relativePath) throws IOException;

    String getFilename();

    String getDescription();
}

 

<InputStreamSource.java>

- Resource 인터페이스가 상속하는 인터페이스다.

- 모든 리소스는 InputStream 형태로 가져올 수 있다.

public interface InputStreamSource {
    InputStream getInputStream() throws IOException;
}

 

 

2. Resource 타입 오브젝트의 사용

Resource는 스프링에서 Bean이 아니라 값으로 취급하기 때문에 설정 파일로 넣을 수 있는 값은 문자열 뿐이다.

그래서 스프링은 문자열로 정의된 리소스를 Resource 타입 오브젝트로 변환해주는 ResourceLoader을 제공해준다.

※ 일반적으로 classpath의 위치는 src/main/java/, src/main/resources/이다.

예시

<property name="myFile" value="classpath:com/example/demo/myfile.txt"/>

 

 

■ 참고 자료 : 토비의 스프링 3.1

반응형

댓글