2.6. ResourceLoaderAware接口
ResourceLoaderAware
接口是一个特殊的回调接口,用于标识期望提供ResourceLoader
引用的组件。以下清单显示了ResourceLoaderAware
接口的定义:
当一个类实现ResourceLoaderAware
并部署到应用程序上下文(作为 Spring 管理的 bean)中时,它被应用程序上下文识别为ResourceLoaderAware
。然后应用程序上下文调用setResourceLoader(ResourceLoader)
,将自己作为参数提供(请记住,Spring 中的所有应用程序上下文都实现了该ResourceLoader
接口)。
由于 ApplicationContext
是一个 ResourceLoader
,因此 bean 也可以实现 ApplicationContextAware
接口并直接使用提供的应用程序上下文来加载资源。但是,一般来说,如果您只需要专用接口,最好使用ResourceLoader
专用接口。该代码将仅与资源加载接口(可以认为是实用程序接口)耦合,而不与整个 Spring ApplicationContext
接口耦合。
在应用程序组件中,您还可以依赖 ResourceLoader
的自动装配作为实现ResourceLoaderAware
接口的替代方法。传统的构造函数和 byType 自动装配模式(如自动装配协作者中所述)能够分别为构造函数参数或 setter 方法参数提供 ResourceLoader
。为了获得更大的灵活性(包括自动装配字段和多个参数方法的能力),请考虑使用基于注解的自动装配功能。在这种情况下,只要相关字段、构造函数或方法带有 @Autowired
注解,ResourceLoader
就会自动装配到需要 ResourceLoader
类型的字段、构造函数参数或方法参数中。有关更多信息,请参阅使用@Autowired。
要为包含通配符或使用特殊classpath*:
资源前缀的资源路径加载一个或多个 Resource 对象,请考虑将 ResourcePatternResolver
实例(而不是 ResourceLoader)自动装配到应用程序组件中。
最后更新于