Java/Spring framework

Spring framework core (8) - Resource

감동이중요해 2020. 1. 15. 01:28

Resource 추상화

Spring framework는 대부분의 기능이 추상화되어 있어 필요한 기능이 있으면 적절한 구현체를 선택하여 사용할 수 있다.

Resource 또한 추상화되어 있어 사용자가 필요한 기능을 선택하여 구현할 수 있게 되어 있다.

Resource 주요 메소드

  1. exists()

    • resource가 반드시 존재하리라는 보장이 없다. 존재 여부를 검사한다.
  2. getFile()

    • resource의 file handle을 받아온다.
  3. getURI()

    • resource의 URI handle을 받아온다.
  4. getURL()

    • resource의 URL handle을 받아온다.

더 많은 정보는 Resource (Spring Framework 5.2.3.RELEASE API)를 참고하자.

Resource 주요 구현체

Resource 의 타입은 ApplicationContext 의 구현체 타입에 따라 달라진다.

  1. ClassPathResource

    • Classpath 기준으로 Resource를 찾는다.
    • ClassPathXmlApplicationContext 와 함께 사용한다.
  2. FileSystemResource

    • file system 기준으로 Resource를 찾는다.
    • FileSystemXmlApplicationContext 와 함께 사용한다.

Type 무관한 Resource

ApplicationContext 의 구현체와 상관 없이 Resource 타입을 강제하고 싶으면 java.net.URI 접두어를 사용한다.

직접 명시하는 것으로 직관성을 크게 높일 수 있다.

  1. ClassPathResource 에서 사용하는 접두어

    • classpath
      • classpath:/application.properties -> 현재 프로젝트의 classpath
      • classpath*:/application.properties -> 상위 프로젝트의 classpath 포함
  2. FileSystemResource 에서 사용하는 접두어

    • file
      • file://resource/application.properties -> 파일의 물리 경로