Part III. 核心技术-8. Resources-8.6 资源作为依赖关系

如果bean本身将通过某种动态过程来确定和提供资源路径,那么bean可以使用ResourceLoader接口来加载资源。 以某种方式加载一个模板,其中需要的特定资源取决于用户的角色。 如果资源是静态的,那么完全消除ResourceLoader接口的使用是有意义的,只需让bean公开它需要的Resource属性,并且期望它们被注入它。

什么使得它们轻松注入这些属性,是所有应用程序上下文注册和使用一个特殊的JavaBeanspropertyeditor,它可以将String路径转换为Resource对象。 因此,如果myBean具有“资源”类型的模板属性,则可以使用该资源的简单字符串进行配置,如下所示:

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

请注意,资源路径没有前缀,因为应用程序上下文本身将用作ResourceLoader,资源本身将通过ClassPathResourceFileSystemResourceServletContextResource(根据需要)加载,具体取决于上下文的确切类型。

如果需要强制使用特定的资源类型,则可以使用前缀。 以下两个示例显示如何强制使用ClassPathResourceUrlResource(后者用于访问文件系统文件)。

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

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...