1 /* 2 * Copyright 2002-2006 the original author or authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package org.springframework.context; 18 19 import org.springframework.core.io.ResourceLoader; 20 21 /** 22 * Interface to be implemented by any object that wishes to be notified of 23 * the <b>ResourceLoader</b> (typically the ApplicationContext) that it runs in. 24 * This is an alternative to a full ApplicationContext dependency via the 25 * ApplicationContextAware interface. 26 * 27 * <p>Note that Resource dependencies can also be exposed as bean properties 28 * of type Resource, populated via Strings with automatic type conversion by 29 * the bean factory. This removes the need for implementing any callback 30 * interface just for the purpose of accessing a specific file resource. 31 * 32 * <p>You typically need a ResourceLoader when your application object has 33 * to access a variety of file resources whose names are calculated. A good 34 * strategy is to make the object use a DefaultResourceLoader but still 35 * implement ResourceLoaderAware to allow for overriding when running in an 36 * ApplicationContext. See ReloadableResourceBundleMessageSource for an example. 37 * 38 * <p>A passed-in ResourceLoader can also be checked for the 39 * <b>ResourcePatternResolver</b> interface and cast accordingly, to be able 40 * to resolve resource patterns into arrays of Resource objects. This will always 41 * work when running in an ApplicationContext (the context interface extends 42 * ResourcePatternResolver). Use a PathMatchingResourcePatternResolver as default. 43 * See also the <code>ResourcePatternUtils.getResourcePatternResolver</code> method. 44 * 45 * <p>As alternative to a ResourcePatternResolver dependency, consider exposing 46 * bean properties of type Resource array, populated via pattern Strings with 47 * automatic type conversion by the bean factory. 48 * 49 * @author Juergen Hoeller 50 * @since 10.03.2004 51 * @see ApplicationContextAware 52 * @see org.springframework.beans.factory.InitializingBean 53 * @see org.springframework.core.io.Resource 54 * @see org.springframework.core.io.support.ResourcePatternResolver 55 * @see org.springframework.core.io.support.ResourcePatternUtils#getResourcePatternResolver 56 * @see org.springframework.core.io.DefaultResourceLoader 57 * @see org.springframework.core.io.support.PathMatchingResourcePatternResolver 58 * @see org.springframework.context.support.ReloadableResourceBundleMessageSource 59 */ 60 public interface ResourceLoaderAware { 61 62 /** 63 * Set the ResourceLoader that this object runs in. 64 * <p>This might be a ResourcePatternResolver, which can be checked 65 * through <code>instanceof ResourcePatternResolver</code>. See also the 66 * <code>ResourcePatternUtils.getResourcePatternResolver</code> method. 67 * <p>Invoked after population of normal bean properties but before an init callback 68 * like InitializingBean's <code>afterPropertiesSet</code> or a custom init-method. 69 * Invoked before ApplicationContextAware's <code>setApplicationContext</code>. 70 * @param resourceLoader ResourceLoader object to be used by this object 71 * @see org.springframework.core.io.support.ResourcePatternResolver 72 * @see org.springframework.core.io.support.ResourcePatternUtils#getResourcePatternResolver 73 */ 74 void setResourceLoader(ResourceLoader resourceLoader); 75 76 } 77