2.6 Resources 의존성

Bean 자체가 일종의 동적 프로세스를 통해 리소스 경로를 결정하고 제공하려는 경우 Bean이 ResourceLoader 인터페이스를 사용하여 리소스를 로드하는 것이 좋다. 예를 들어, 필요한 특정 자원이 사용자의 역할에 의존하는 일종의 템플릿로드를 고려하자. 리소스가 정적 인 경우, ResourceLoader 인터페이스의 사용을 완전히 제거하고 필요한 리소스 속성을 보여주는 빈을 갖도록하고, 리소스 속성에 이를 삽입 하자.

그런 다음 이러한 속성을 주입하는 것이 쉬운 이유는 모든 응용 프로그램 컨텍스트가 String 경로를 Resource 객체로 변환 할 수있는 특수 JavaBeans PropertyEditor를 등록하고 사용한다는 것이다. 따라서 myBean에 Resource 유형의 템플릿 속성이있는 경우 다음 예제와 같이 해당 리소스에 대한 간단한 문자열로 구성 할 수 있다.

<bean id="myBean" class="...">
    <property name="template" value="some/resource/path/myTemplate.txt"/>
</bean>

리소스 경로는 prefix가 없다. 연속적으로 어플리케이션 컨텍스트는 ResourceLoader를 사용하기 때문에 리소스 자체는 컨텍스트의 외부 타입에 의존하는 ClassPathResource, FileSystemResource, ServletContextResource를 통해 로드된다.

만약 사용하는 구체적인 Resource 타입이 강화될 필요성이 있다면 prefix를 사용해라. 아래 두 예제는 ClassPathResource와 UrlResource를 어떻게 강화하는지 알려준다.(파일 시스템 파일에 접근하기 위해 사용되는 문자)

<property name="template" value="classpath:some/resource/path/myTemplate.txt">
<property name="template" value="file:///some/resource/path/myTemplate.txt"/>

Last updated