Resource, ResourceLoader 인터페이스 사용 예
간단한 테스트 코드를 작성해 봤습니다.
@Test public void resource(){
Resource resource = context.getResource("resourceTest.txt");
assertTrue(resource.exists());
}
Resource resource = context.getResource("resourceTest.txt");
assertTrue(resource.exists());
}
ApplicationContext를 ResourceLoader로 사용할 수도 있기 때문에 getResource를 통해서 Resource객체를 받을 수 있습니다.
resourceTest.txt 파일의 위치가 위 와 같을 때.. 위의 테스트 코드는 빨간불이 들어옵니다. 대시 file: 이라는 prefix를 붙여 주면 녹색 불이 들어옵니다.
@Test public void resource(){
Resource resource = context.getResource("file:resourceTest.txt");
assertTrue(resource.exists());
}
Resource resource = context.getResource("file:resourceTest.txt");
assertTrue(resource.exists());
}
getResource의 인자로 넘기는 문자열 값에 붙일 수 있는 prefix에는 다음과 같은 것들이 있습니다.
Prefix | Example | Explanation |
---|---|---|
classpath: |
classpath:com/myapp/config.xml |
Loaded from the classpath. |
file: |
file:/data/config.xml |
Loaded as a URL, from the |
http: |
http://myserver/logo.png |
Loaded as a |
(none) |
/data/config.xml |
Depends on the underlying |
아무것도 안붙인 상태에서 에러가 발생한 이유는 현재 사용중인 ApplicationContext가 ClassPathXmlApplicationContext 이녀석이기 때문에 classpath: 를 붙인 것 처럼 동작했기 때문입니다.