Whiteship's Note

4.4. The Resource abstraction

Spring DM/Chapter 4 : 2008. 4. 12. 18:00


스프링은 리소스 추상화 계층을 제공합니다.
- Application Context는 그 녀석을 기본으로 탑재하고 있습니다.
- 모든 리소스는 application context가 가지고 있는 org.springframework.core.io.ResourceLoader가 읽어옵니다. 물론 이 녀석을 별도의 bean에 주입하고 직접 코딩을 통해서 리소스를 읽어와도 됩니다.
- 리소스의 경로 앞에 classpath: 또는 file: 접두어prefix를 사용하여 가져올 리소스의 경로를 지정할 수 있는데, 사용하는 application context의 구현체에 따라 기본으로 사용하느 접두어가 다릅니다.

OSGi 4.0.X 스펙에는 리소스를 읽어올 세 종류의 공간space을 정의하고 있습니다.
- 스프링 DM은 이 모든 것들을 적잘한 OSGi 맞춤 application context와 적잘한 접두어를 사용하여 지원합니다.

접두어

OSGi 리소스 로딩 방법

설명

classpath:

Class Space

번들 클래스로더(the bundle, all imported packages and required bundles)를 찾는다. 해당 번들들이 RESOLVED 상태가 되도록 강제한다. 이 방법은 OSGi API Bundle 클래스의 getResource(String)과 유사한 방법이다.

classpath*:

Class Space

번들 클래스로더(the bundle and all imported packages and required bundles)를 찾는다. 해당 번들들이 RESOLVED 상태가 되도록 강제한다. 이 방법은 OSGi API Bundle 클래스의 getResource(String)과 유사한 방법이다.

osgibundlejar:

JAR File(or JarSpace)

번들 jar만 찾는다. 번들을 RESOLVED 상태로 만들 필요 없이 low-level 접근을 제공한다.

osgibundle:

Bundle Space

번들 jar와 그것에 붙어있는 조각(fragment)들까지 찾는다. 클래스로더를 생성하거나 번들이 RESOLVED 상태가 되도록 강제하지 않는다.



노트
만약 접두어를 붙이지 않으면, 기본으로 bundle space(osgibundle:)를 사용합니다.

노트
OSGi의 동적인 특징 때문에, 번들 클래스패스가 생명주기 동안 변경 될 수 있습니다. 이것으로 인해 실행 중이 환경 또는 타겟 플랫폼에 기반해서 패턴 매칭을 할 때 전혀 다른 클래스패스 리소스가 반환될 가능성이 있습니다.

file: 이나 http: 같은 일반적인 스프링 리소스 접두어들도 물론 지원하며, 리소스 로딩이 되는 대상은 위치에 있더라고 상관없습니다. resource-loading 번들 또는 거기에 붙어있는 fragment에 국한되진 않습니다.

OSGi 플랫폼들이 번들에 들어있는 내용물을 찾기 위한 자신들 만의 독특한 접두어들을 가지고 있을 수도 있다. 예를들어, Equinox는 bundleresource: 와 bundlentry: 접두어를 가지고 있다. 물론 이렇게 플랫폼이 정의한 프리픽스도 스프링 OSGi(여긴 DM이라고 안 했네.ㅋㅋ)과 함께 사용할 수 있다. (특정, OSGi 구현체에 여러분들이 직접 타이핑하는 수고는 해야하다.)

'Spring DM > Chapter 4' 카테고리의 다른 글

4.7. Stopping the extender bundle  (0) 2008.04.13
4.6. Application Context Destruction  (0) 2008.04.13
4.4. The Resource abstraction  (0) 2008.04.12
4.5. Accessing the BundleContext  (0) 2008.04.12
4.3. Bundle Lifecycle  (2) 2008.04.11
4.2. Application Context Creation  (0) 2008.04.11
4.1. The Spring Dynamic Modules Extender bundle  (0) 2008.04.10
Bundles and Application Contexts  (0) 2008.04.09
top

Write a comment.