5.6.把Resources 作为属性来配置
优质
小牛编辑
130浏览
2023-12-01
5.6. 把Resource
s 作为属性来配置
如果bean自身希望通过一些动态方式决定和提供资源路径,那么让这个bean通过 ResourceLoader
接口去载入资源就很有意义了。考虑一个载入某类模板的例子,其中需要哪种特殊类型由用户的角色决定。 如果同时资源是静态的,完全不使用 ResourceLoader
接口很有意义, 这样只需让这些bean暴露所需的 Resource
属性,并保证他们会被注入。
让注入这些属性变得比较繁琐的原因是,所有的application context注册并使用了能把 String
路径变为 Resource
对象的特殊 PropertyEditor
JavaBeans。因此如果 myBean
有 Resource
类型的模板属性, 那它就能够使用简单的字符串配置该资源,如下所示:
bean id="myBean"> <property name="template" value="some/resource/path/myTemplate.txt" /> </bean>
可以看到资源路径没有前缀,因为application context本身要被作为 ResourceLoader
使用,这个资源会被载入为ClassPathResource
、 FileSystemResource
、 ServletContextResource
等等,这取决于context类型。
如果有必要强制使用特殊的 Resource
类型,那你就可以使用前缀。下面的两个例子说明了如何强制使用 ClassPathResource
和 UrlResource
(其中的第二个被用来访问文件系统中的文件)。
<property name="template" value="classpath:some/resource/path/myTemplate.txt"/>
<property name="template" value="file:/some/resource/path/myTemplate.txt"/>