Spring框架中如何实现Resource资源与策略模式的结合应用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计850个文字,预计阅读时间需要4分钟。
Spring将所有能记录信息的载体,如各种类型的文件、二进制流等,统称为资源。对Spring开发者来说,最常用的资源就是配置文件(通常是XML格式的文件)。
Spring 把所有能记录信息的载体,如各种类型的文件、二进制流等都称为资源,对 Spring 开发者来说,最常用的资源就是 Spring 配置文件(通常是一份 XML 格式的文件)。
在 Sun 所提供的标准 API 里,资源访问通常由 java.net.URL 和文件 IO 来完成,尤其是当我们需要访问来自网络的资源时,通常会选择 URL 类。
URL 类可以处理一些常规的资源访问问题,但依然不能很好地满足所有底层资源访问的需要,比如,暂时还无法从类加载路径、或相对于 ServletContext 的路径来访问资源,虽然 Java 允许使用特定的 URL 前缀注册新的处理类(例如已有的 localhost:8888/bean.xml);
以下是常见前缀及对应的访问策略:
- classpath: 以 ClassPathResource 实例来访问类路径里的资源。
- file: 以 UrlResource 实例访问本地文件系统的资源。
- www.springframework.org/dtd/spring-beans-2.0.dtd">
<!-- Spring 配置文件的根元素 -->
<beans>
<bean id="test" class="lee.TestBean">
<!-- 注入资源 -->
<property name="resource"value="classpath:book.xml"/>
</bean>
</beans>上面配置文件中粗体字代码配置了资源的位置,并使用了 classpath: 前缀,这指明让 Spring 从类加载路径里加载 book.xml 文件。与前面类似的是,此处的前缀也可采用 http:、ftp: 等,这些前缀将强制 Spring 采用怎样的资源访问策略(也就是指定具体使用哪个 Resource 实现类);如果不采用任何前缀,则 Spring 将采用与该 ApplicationContext 相同的资源访问策略来访问资源。
采用依赖注入,允许动态配置资源文件位置,无须将资源文件位置写在代码中,当资源文件位置发生变化时,无须改写程序,直接修改配置文件即可。
小结
现在,Spring 框架已成为绝大部分框架都争相 “拥抱” 的对象(现在大部分 Java EE 框架都会提供与 Spring 整合的接口),Spring 框架能发展到今天绝非偶然,很大程度上来自于两方面原因:一方面 Spring 框架既提供了简单、易用的编程接口,因此深得用户拥护;另一方面 Spring 框架自身具有极为优秀的设计,这种优秀的设计保证了 Spring 框架具有强大生命力。对于一个有志于向架构师发展的软件工程师而言,精研 Spring 框架的源码,深入理解 Spring 框架的设计是一个不错的途径。本文主要从策略模式的角度来分析了 Spring 资源访问方面的设计,从而帮助读者更好地理解 Spring 框架。
本文共计850个文字,预计阅读时间需要4分钟。
Spring将所有能记录信息的载体,如各种类型的文件、二进制流等,统称为资源。对Spring开发者来说,最常用的资源就是配置文件(通常是XML格式的文件)。
Spring 把所有能记录信息的载体,如各种类型的文件、二进制流等都称为资源,对 Spring 开发者来说,最常用的资源就是 Spring 配置文件(通常是一份 XML 格式的文件)。
在 Sun 所提供的标准 API 里,资源访问通常由 java.net.URL 和文件 IO 来完成,尤其是当我们需要访问来自网络的资源时,通常会选择 URL 类。
URL 类可以处理一些常规的资源访问问题,但依然不能很好地满足所有底层资源访问的需要,比如,暂时还无法从类加载路径、或相对于 ServletContext 的路径来访问资源,虽然 Java 允许使用特定的 URL 前缀注册新的处理类(例如已有的 localhost:8888/bean.xml);
以下是常见前缀及对应的访问策略:
- classpath: 以 ClassPathResource 实例来访问类路径里的资源。
- file: 以 UrlResource 实例访问本地文件系统的资源。
- www.springframework.org/dtd/spring-beans-2.0.dtd">
<!-- Spring 配置文件的根元素 -->
<beans>
<bean id="test" class="lee.TestBean">
<!-- 注入资源 -->
<property name="resource"value="classpath:book.xml"/>
</bean>
</beans>上面配置文件中粗体字代码配置了资源的位置,并使用了 classpath: 前缀,这指明让 Spring 从类加载路径里加载 book.xml 文件。与前面类似的是,此处的前缀也可采用 http:、ftp: 等,这些前缀将强制 Spring 采用怎样的资源访问策略(也就是指定具体使用哪个 Resource 实现类);如果不采用任何前缀,则 Spring 将采用与该 ApplicationContext 相同的资源访问策略来访问资源。
采用依赖注入,允许动态配置资源文件位置,无须将资源文件位置写在代码中,当资源文件位置发生变化时,无须改写程序,直接修改配置文件即可。
小结
现在,Spring 框架已成为绝大部分框架都争相 “拥抱” 的对象(现在大部分 Java EE 框架都会提供与 Spring 整合的接口),Spring 框架能发展到今天绝非偶然,很大程度上来自于两方面原因:一方面 Spring 框架既提供了简单、易用的编程接口,因此深得用户拥护;另一方面 Spring 框架自身具有极为优秀的设计,这种优秀的设计保证了 Spring 框架具有强大生命力。对于一个有志于向架构师发展的软件工程师而言,精研 Spring 框架的源码,深入理解 Spring 框架的设计是一个不错的途径。本文主要从策略模式的角度来分析了 Spring 资源访问方面的设计,从而帮助读者更好地理解 Spring 框架。

