ApplicationContext vs BeanFactory (Spring)


What is BeanFactory?

BeanFactory is the core IoC container in Spring Framework.

Key Idea:

Provides basic dependency injection and bean management.

Responsibilities:

  • Creates beans
  • Injects dependencies
  • Manages bean lifecycle

Characteristics:

  • Lazy Initialization (default)
  • Lightweight
  • Minimal features

What is ApplicationContext?

ApplicationContext is an advanced container built on top of BeanFactory.

Key Idea:

Provides all BeanFactory features + enterprise-level capabilities.

Characteristics:

  • Eager Initialization (default)
  • Feature-rich
  • Used in almost all Spring Boot applications

Features of ApplicationContext

  • Internationalization (i18n)
  • Event publishing
  • AOP support
  • Environment & property handling
  • Annotation-based configuration
  • BeanPostProcessor support

Key Differences

Feature BeanFactory ApplicationContext
Type Basic container Advanced container
Initialization Lazy Eager
Features Basic DI Enterprise features
AOP Support Limited Full
Event Handling No Yes
Use Case Rare Standard

Relationship

ApplicationContext extends BeanFactory.


Real-world (Spring Boot)

SpringApplication.run() internally creates ApplicationContext and manages:

  • Bean creation
  • Dependency injection
  • Application startup

When to Use

  • BeanFactory → Rare, low-level usage
  • ApplicationContext → Almost always

Summary

BeanFactory:

  • Basic IoC container for managing beans.
  • BeanFactory = Core engine

ApplicationContext:

  • Advanced container with additional enterprise features.
  • ApplicationContext = Full-featured container built on top

This site uses Just the Docs, a documentation theme for Jekyll.