为了获得最佳的使用效果和对应用程序上下文的理解,你应该熟悉 Spring 的资源抽象,如 Resources 中所述。
一个应用程序上下文是一个 ResourceLoader,它可以用来加载 Resource 对象。Resource 本质上是 JDK java.net.URL
类的一个功能更丰富的版本。事实上,在适当的时候,Resource 的实现会包装 java.net.URL
的实例。资源可以以透明的方式从几乎任何位置获取底层资源,包括从 classpath、文件系统位置、可以用标准 URL 描述的任何地方,以及其他一些变化。如果资源位置字符串是一个没有任何特殊前缀的简单路径,那么这些资源的来源是特定的,适合于实际的应用环境类型。
你可以配置部署到应用上下文中的 Bean 来实现特殊的回调接口 ResourceLoaderAware,以便在初始化时自动回调,应用上下文本身作为 ResourceLoader 传入。你也可以公开资源类型的属性,用于访问静态资源。它们像其他属性一样被注入其中。你可以将这些资源属性指定为简单的字符串路径,并在 Bean 部署时依赖从这些文本字符串到实际资源对象的自动转换。
提供给 ApplicationContext 构造函数的一个或多个位置路径实际上是资源字符串,以简单的形式,根据具体的上下文实现被适当地处理。例如,ClassPathXmlApplicationContext
将一个简单的位置路径视为 classpath 位置。你也可以使用带有特殊前缀的位置路径(资源字符串)来强制从 classpath 或 URL 加载定义,而不考虑实际的上下文类型。