반응형
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
반응형
'Spring Series > Spring Framework' 카테고리의 다른 글
[Spring] IoC 컨테이너를 통해 애플리케이션이 만들어지는 방식 (0) | 2022.06.07 |
---|---|
[Spring] XML 설정 방식을 Annotation으로 바꾸기 (0) | 2022.05.06 |
[Spring] Static 멤버 클래스를 Bean으로 등록하기 (0) | 2022.04.14 |
[Spring] 여러 AOP 및 트랜잭션 기법들 (0) | 2022.04.01 |
[Spring] 트랜잭션 추상화 (0) | 2022.03.27 |
댓글