Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

charminseok

[Spring] Resource 추상화 본문

Spring

[Spring] Resource 추상화

charminseok 2021. 1. 23. 00:14

추상화란?

추상화란 하위 시스템의 공통점을 뽑아내서 분리시키는 것을 말합니다. 그렇게 하면 하위 시스템이 어떤 것인지 알지 못해도, 또는 하위 시스템이 바뀌더라도 일관된 방법으로 접근할 수가 있습니다.

추상화를 하려면, IoC/DI를 이용해 서비스 추상화를 용이하게 할 수 있습니다. applicationContext.xml을 통해 서비스 추상화를 구현합니다. 이때 중요한 것은 높은 응집도와 낮은 결합도를 준수하는 것입니다. 이것이 핵심입니다.

출처: https://happygrammer.tistory.com/61 [happygrammer]

 

스프링이 리소스는 java.net.URL을 추상화 한 것. java.net.URL를 org.springframework.core.io.Resource로 감싸서 low level에 있는 리소스에 접근하는 기능으로 스프링 내부에서 가장 많이 사용하는 인터페이스.

 

추상화 한 이유

1. 클래스패스 기준으로 리소스를 읽어오는 기능 부재

    리소스를 읽어오는 방법을 하나로 통일시키기 위해.

2.ServketContext를 기준으로  상대 경로로 읽어오는 기능 부재

3.새로운 핸들러를 등록하여 특별한 URL 접미사를 만들어 사용할 수는 있지만 구현이 복잡하고 편의성 메소드가 부족하다.

 

Resource 구현체

  • UrlResource: http, https, ftp, file, jar 프로토콜 지원
  • classPathResource: Classpath 키워드를 접두사로 사용
  • FileSystemResource
  • ServletContextResource: 웹 애플리케이션 루트에서 상대 경로로 Resource를 찾는다.
  • InputStreamResource
  • ByteArrayResource

 

Resource 읽어오기

 Resource 타입은 location 문자열과 ApplicationContext의 타입에 따라 결정.  ApplicationContext의 타입에 상관없이 리소스 타입을 사용하려면 java.net.URL 접두어를 사용하면 된다.

Core Technologies (spring.io)2.4. The ResourceLoader

 

접두어를 사용하면 리소스가 어디서 오는지 알 수 있다.

'Spring' 카테고리의 다른 글

[Spring] Data Binding  (0) 2021.01.24
[Spring] Validation 추상화  (0) 2021.01.23
Spring MessageSource  (0) 2021.01.22
Environment(Property)  (0) 2021.01.22
Environment(프로파일)  (0) 2021.01.22