当一个类实现ResourceLoaderAware并部署到应用程序上下文(作为 Spring 管理的 bean)中时,它被应用程序上下文识别为ResourceLoaderAware。然后应用程序上下文调用setResourceLoader(ResourceLoader),将自己作为参数提供(请记住,Spring 中的所有应用程序上下文都实现了该ResourceLoader接口)。
由于 ApplicationContext是一个 ResourceLoader,因此 bean 也可以实现 ApplicationContextAware接口并直接使用提供的应用程序上下文来加载资源。但是,一般来说,如果您只需要专用接口,最好使用ResourceLoader 专用接口。该代码将仅与资源加载接口(可以认为是实用程序接口)耦合,而不与整个 Spring ApplicationContext接口耦合。