不管是资源(Resource),还是资源加载器(ResourceLoader),Spring都把它定义成了接口的形式,而不是类的形式。这样降低了与具体的实现类之间的耦合,更具灵活性与易扩展性。它们的关系图如下:

且看ResourceLoader的getResource(String location)方法的声明:
/**
* Return a Resource handle for the specified resource.
* The handle should always be a reusable resource descriptor,
* allowing for multiple {@link Resource#getInputStream()} calls.
* <p><ul>
* <li>Must support fully qualified URLs, e.g. "file:C:/test.dat".
* <li>Must support classpath pseudo-URLs, e.g. "classpath:test.dat".
* <li>Should support relative file paths, e.g. "WEB-INF/test.dat".
* (This will be implementation-specific, typically provided by an
* ApplicationContext implementation.)
* </ul>
* <p>Note that a Resource handle does not imply an existing resource;
* yo

本文探讨了Spring中Resource接口和ResourceLoader的设计,如何通过接口降低耦合性和增强扩展性。Spring使用策略模式处理不同类型的Resource,如UrlResource和ClasspathResource,通过try-catch实现灵活加载。同时,介绍了策略模式的一般结构,强调在多策略场景下,使用if-else或switch进行策略选择的重要性。
最低0.47元/天 解锁文章
1540

被折叠的 条评论
为什么被折叠?



