Sobes.tech
Junior

What is ApplicationContext in Spring?

sobes.tech AI

Answer from AI

ApplicationContext is the central interface in the Spring Framework that provides configuration metadata for the application. It is an extended version of BeanFactory and adds functionalities for dependency management, internationalization, resource loading, and event management. ApplicationContext loads bean definitions and provides their instances on demand, injecting necessary dependencies.

Main features:

  • Bean initialization: Loading and instantiating beans based on configuration.
  • Dependency management: Automatic resolution and injection of dependencies between beans.
  • Bean lifecycle management: Calling initialization and destruction methods.
  • Internationalization (i18n): Support for localized messages.
  • Resource loading: Access to resources (files, URLs) in a uniform manner.
  • Event publication: Mechanism for publishing and handling events within the application.
  • Various implementations: Support for different configuration sources (XML, annotations, JavaConfig).

Examples of implementations:

  • ClassPathXmlApplicationContext: Loads configuration from XML files in the classpath.
  • FileSystemXmlApplicationContext: Loads configuration from XML files in the filesystem.
  • AnnotationConfigApplicationContext: Loads configuration from Java classes with @Configuration annotations.
  • WebApplicationContext: Extension of ApplicationContext for web applications.

Example usage:

// Configuration class
@Configuration
@ComponentScan("com.example")
public class AppConfig {

    @Bean
    public MyService myService() {
        return new MyServiceImpl();
    }
}
// Obtaining ApplicationContext and bean
public class Main {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
        MyService service = context.getBean(MyService.class);
        service.doSomething();
    }
}