classpath에 위치한 resource를 가져오는 다양한 방법
Spring에서 file, classpath에 위치한 리소스를 제공해주는 Resource 라는 추상화된 인터페이스를 제공해준다.
이번글에서는 Resource 인터페이스의 구현체인 ClassPathResource와 PathMatchingResourcePatternResolver를 이용하여 classpath에 위치한 resource를 가져오는 5가지의 방법을 알아보도록 한다.
classpath resource
현재 classpath의 resource에는 다음과 같은 디렉토리 및 파일들이 존재한다.
classpath resource 조회
ClassPathResource 생성자 또는 PathMatchingResourcePatternResolver 클래스의 getResource 메서드로 classpath에 위치한 리소스이름을 인자로 넣어주면 해당 리소스의 정보를 가져올 수 있다.
PathMatchingResourcePatternResolver 클래스의 getResources 메서드로 리소스이름을 정규식 문자열로 넣어주면 해당 정규식패턴과 일치하는 리소스의 정보를 가져올 수 있다.
첫번째 사진에서는 PathMatchingResourcePatternResolver의 getResource 메서드를 이용하였는데 이 메서드는 정규식패턴을 지원하지 않고 getResources 메서드가 정규식패턴을 지원해주니 이름을 헷갈려하지 않도록 주의해서 사용하자.
파일명뿐만 아니라 디렉토리명도 와일드카드를 이용해서 모든 디렉토리의 리소스를 조회할 수 있다.
모든 디렉토리가 아닌 특정 디렉토리를 정규식을 이용해서 가져올 수 있다. 디렉토리 이름이 'b'로 시작하는 즉, 특정이름으로 시작하는 디렉토리의 모든 리소스를 조회할 수도 있다.
위 사진과 반대로 디렉토리 이름이 'r'로 끝나는 즉, 특정이름으로 끝나는 디렉토리의 모든 리소스도 조회할 수 있다.