?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
如果bean自身希望通過(guò)一些動(dòng)態(tài)方式?jīng)Q定和提供資源路徑,那么讓這個(gè)bean通過(guò) ResourceLoader
接口去載入資源就很有意義了。考慮一個(gè)載入某類模板的例子,其中需要哪種特殊類型由用戶的角色決定。
如果同時(shí)資源是靜態(tài)的,完全不使用 ResourceLoader
接口很有意義,
這樣只需讓這些bean暴露所需的 Resource
屬性,并保證他們會(huì)被注入。
讓注入這些屬性的工作變得如此容易的原因是,所有的application context注冊(cè)并使用了能把 String
路徑變?yōu)?Resource
對(duì)象的特殊 PropertyEditor
JavaBeans。因此如果 myBean
有 Resource
類型的template屬性,
那它就能夠使用簡(jiǎn)單的字符串配置該資源,如下所示:
<bean id="myBean" class="..."> <property name="template" value="some/resource/path/myTemplate.txt"/> </bean>
可以看到資源路徑?jīng)]有前綴,因?yàn)閍pplication context本身要被作為 ResourceLoader
使用,這個(gè)資源會(huì)被載入為ClassPathResource
、
FileSystemResource
、
ServletContextResource
等等,這取決于context類型。
如果有必要強(qiáng)制使用特殊的 Resource
類型,那你就可以使用前綴。下面的兩個(gè)例子說(shuō)明了如何強(qiáng)制使用 ClassPathResource
和
UrlResource
(其中的第二個(gè)被用來(lái)訪問(wèn)文件系統(tǒng)中的文件)。
<property name="template" value="classpath:some/resource/path/myTemplate.txt">
<property name="template" value="file:/some/resource/path/myTemplate.txt"/>