01: /*
02: * Copyright 2002-2007 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.beans.factory.HierarchicalBeanFactory;
20: import org.springframework.beans.factory.ListableBeanFactory;
21: import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
22: import org.springframework.core.io.support.ResourcePatternResolver;
23:
24: /**
25: * Central interface to provide configuration for an application.
26: * This is read-only while the application is running, but may be
27: * reloaded if the implementation supports this.
28: *
29: * <p>An ApplicationContext provides:
30: * <ul>
31: * <li>Bean factory methods for accessing application components.
32: * Inherited from {@link org.springframework.beans.factory.ListableBeanFactory}.
33: * <li>The ability to load file resources in a generic fashion.
34: * Inherited from the {@link org.springframework.core.io.ResourceLoader} interface.
35: * <li>The ability to publish events to registered listeners.
36: * Inherited from the {@link ApplicationEventPublisher} interface.
37: * <li>The ability to resolve messages, supporting internationalization.
38: * Inherited from the {@link MessageSource} interface.
39: * <li>Inheritance from a parent context. Definitions in a descendant context
40: * will always take priority. This means, for example, that a single parent
41: * context can be used by an entire web application, while each servlet has
42: * its own child context that is independent of that of any other servlet.
43: * </ul>
44: *
45: * <p>In addition to standard {@link org.springframework.beans.factory.BeanFactory}
46: * lifecycle capabilities, ApplicationContext implementations detect and invoke
47: * {@link ApplicationContextAware} beans as well as {@link ResourceLoaderAware},
48: * {@link ApplicationEventPublisherAware} and {@link MessageSourceAware} beans.
49: *
50: * @author Rod Johnson
51: * @author Juergen Hoeller
52: * @see ConfigurableApplicationContext
53: * @see org.springframework.beans.factory.BeanFactory
54: * @see org.springframework.core.io.ResourceLoader
55: */
56: public interface ApplicationContext extends ListableBeanFactory,
57: HierarchicalBeanFactory, MessageSource,
58: ApplicationEventPublisher, ResourcePatternResolver {
59:
60: /**
61: * Return the parent context, or <code>null</code> if there is no parent
62: * and this is the root of the context hierarchy.
63: * @return the parent context, or <code>null</code> if there is no parent
64: */
65: ApplicationContext getParent();
66:
67: /**
68: * Expose AutowireCapableBeanFactory functionality for this context.
69: * <p>This is not typically used by application code, except for the purpose
70: * of initializing bean instances that live outside the application context,
71: * applying the Spring bean lifecycle (fully or partly) to them.
72: * <p>Alternatively, the internal BeanFactory exposed by the
73: * {@link ConfigurableApplicationContext} interface offers access to the
74: * AutowireCapableBeanFactory interface too. The present method mainly
75: * serves as convenient, specific facility on the ApplicationContext
76: * interface itself.
77: * @return the AutowireCapableBeanFactory for this context
78: * @throws IllegalStateException if the context does not support
79: * the AutowireCapableBeanFactory interface or does not hold an autowire-capable
80: * bean factory yet (usually if <code>refresh()</code> has never been called)
81: * @see ConfigurableApplicationContext#refresh()
82: * @see ConfigurableApplicationContext#getBeanFactory()
83: */
84: AutowireCapableBeanFactory getAutowireCapableBeanFactory()
85: throws IllegalStateException;
86:
87: /**
88: * Return a friendly name for this context.
89: * @return a display name for this context
90: */
91: String getDisplayName();
92:
93: /**
94: * Return the timestamp when this context was first loaded.
95: * @return the timestamp (ms) when this context was first loaded
96: */
97: long getStartupDate();
98:
99: }
|