Spring provides several implementations of the ApplicationContext interface, tailored for different use cases and application types. Here's a breakdown of the key implementations:
1. Annotation-Based Configuration
-
AnnotationConfigApplicationContext- A standalone implementation for working with Java-based configuration (
@Configuration,@Bean,@Component, etc.). - Ideal for modern Spring applications where XML configuration is not used.
- Commonly used in Spring Boot or standalone applications.
- A standalone implementation for working with Java-based configuration (
2. XML-Based Configuration
-
ClassPathXmlApplicationContext- Loads bean definitions from an XML configuration file located in the classpath.
- Common in older Spring applications.
-
FileSystemXmlApplicationContext- Similar to
ClassPathXmlApplicationContext, but the XML configuration file is loaded from a file system path instead of the classpath.
- Similar to
3. Web-Specific Contexts
-
XmlWebApplicationContext- A web-specific implementation that loads XML bean definitions.
- Typically used in traditional Spring MVC applications.
- Integrates with
web.xmlconfigurations or servlet context.
-
AnnotationConfigWebApplicationContext- A web-specific implementation for Java-based configuration.
- Used in modern Spring MVC or Spring Boot applications for web environments.
- Allows configuring web-related beans via annotations like
@Controller,@RestController, etc.
4. Generic Application Contexts
-
GenericApplicationContext- A flexible implementation that provides a general-purpose application context.
- Can register beans dynamically via
registerBean()orregisterSingleton()methods. - Often used as a base class for custom implementations.
-
GenericWebApplicationContext- A web-specific variant of
GenericApplicationContext. - Can be programmatically configured in web applications.
- A web-specific variant of
5. Reactive Context
-
ReactiveWebApplicationContext- Designed for reactive applications built with Spring WebFlux.
- Supports non-blocking, event-driven architecture.
6. Special-Purpose Contexts
-
StaticApplicationContext- A simple, programmatic implementation for testing or quick prototypes.
- Allows you to register beans programmatically without XML or annotations.
- Rarely used in real applications.
-
ConfigurableApplicationContext- Not a standalone implementation but an extended interface for application contexts that are configurable (e.g.,
refresh(),close()). - Implemented by other contexts like
AnnotationConfigApplicationContext.
- Not a standalone implementation but an extended interface for application contexts that are configurable (e.g.,
Commonly Used Implementations
| Implementation | Use Case |
|---|---|
AnnotationConfigApplicationContext |
Java-based configuration for standalone apps. |
ClassPathXmlApplicationContext |
XML configuration loaded from the classpath. |
AnnotationConfigWebApplicationContext |
Java-based configuration for web apps. |
XmlWebApplicationContext |
XML configuration for web apps. |
GenericApplicationContext |
Programmatic, general-purpose context. |
How Many in Total?
Counting variations and less commonly used implementations, Spring provides around 8-10 distinct implementations of ApplicationContext. However, in practice, only a few of these (like AnnotationConfigApplicationContext and AnnotationConfigWebApplicationContext) are used extensively in modern applications.
Top comments (0)