Spring

A framework for building Java applications, provides:

Spring itself is modular, not a full product. (like a toolbox)

Issue:

Flow

Application Start
 ↓
Create ApplicationContext (create IOC container)
 ↓
Scan Classpath
 ↓
Read Bean Definitions
 ↓ 
Build Dependency Graph (Analyze and build)
 ↓
Instantiate Beans
 ↓
Inject Dependencies (DI)
 ↓
Lifecycle Callbacks
 ↓
Application Ready