ResourceLoaderAware
是特殊的标记接口,它希望拥有一个ResourceLoader
引用的对象。
public interface ResourceLoaderAware { void setResourceLoader(ResourceLoader resourceLoader); }
当实现了 ResourceLoaderAware
接口的类部署到application context(比如受Spring管理的bean)中时,它会被application context识别为 ResourceLoaderAware
。
接着application context会调用setResourceLoader(ResourceLoader)
方法,并把自身作为参数传入该方法(记住,所有Spring里的application context都实现了ResourceLoader
接口)。
既然 ApplicationContext
就是ResourceLoader
,那么该bean就可以实现 ApplicationContextAware
接口并直接使用所提供的application context来载入资源,但是通常更适合使用特定的满足所有需要的
ResourceLoader
实现。
这样一来,代码只需要依赖于可以看作辅助接口的资源载入接口,而不用依赖于整个Spring ApplicationContext
接口。