01: /*
02: * Copyright 2002-2006 the original author or authors.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
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: }
|