Spring Resource: ресурсы как зависимости

Если сам bean-компонент будет определять и предоставлять путь к ресурсам посредством какого-то динамического процесса, для него, вероятно, имеет смысл использовать интерфейс ResourceLoader для загрузки ресурсов. Например, рассмотрим загрузку какого-либо шаблона, в котором конкретный необходимый ресурс зависит от роли пользователя. Если ресурсы статичны, имеет смысл полностью исключить использование интерфейса ResourceLoader, сделать так, чтобы bean-компонент раскрыл необходимые ему свойства ресурса и ожидал, что они будут внедрены в него.

Последующее внедрение этих свойств делает тривиальным то, что все контексты приложения регистрируются и используют специальный JavaBeans PropertyEditor, который может преобразовывать String paths в Resource объекты. Итак, если myBean имеет свойство template типа Resource, его можно настроить с помощью простой строки для этого ресурса, как показано в следующем примере:

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

Обратите внимание, что путь к ресурсу не имеет префикса. Следовательно, поскольку сам контекст приложения будет использоваться в качестве ResourceLoader, сам ресурс загружается через ClassPathResource, FileSystemResource или ServletContextResource, в зависимости от точного типа контекста.

Если вам нужно принудительно использовать определенный тип ресурса, вы можете использовать префикс. В следующих двух примерах показано, как принудительно использовать ClassPathResource и UrlResource (последний используется для доступа к файлу файловой системы):

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

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


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки