Spring Boot Lifecycle

1. Introduction

The Spring Boot Lifecycle describes the sequence of stages that occur from the moment a Spring Boot application starts until it shuts down.

2. High-Level Lifecycle Flow

Application Start
       │
       ▼
SpringApplication.run()
       │
       ▼
Environment Prepared
       │
       ▼
ApplicationContext Created
       │
       ▼
Beans Instantiated
       │
       ▼
Dependency Injection
       │
       ▼
Bean Initialization
       │
       ▼
Application Ready
       │
       ▼
Application Running
       │
       ▼
Shutdown Triggered
       │
       ▼
Bean Destruction

3. Application Entry Point


@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

4. Application Types

TypeDescription
ServletTraditional web application
ReactiveReactive web application
NoneNon‑web application

5. Bean Lifecycle

Bean Definition Loaded
        │
        ▼
Bean Instantiation
        │
        ▼
Dependency Injection
        │
        ▼
@PostConstruct
        │
        ▼
Bean Ready
        │
        ▼
PreDestroy
        │
        ▼
Bean Destroyed

6. Bean Example


@Component
public class UserService {

    public UserService() {
        System.out.println("Bean Created");
    }

    @PostConstruct
    public void init() {
        System.out.println("Bean Initialized");
    }

    @PreDestroy
    public void destroy() {
        System.out.println("Cleaning resources...");
    }
}

7. Startup Hooks

CommandLineRunner


@Component
public class MyRunner implements CommandLineRunner {

    @Override
    public void run(String... args) {
        System.out.println("CommandLineRunner executed");
    }
}

ApplicationRunner


@Component
public class MyAppRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) {
        System.out.println("ApplicationRunner executed");
    }
}

8. Lifecycle Events

EventDescription
ApplicationStartingEventApplication starting
ApplicationEnvironmentPreparedEventEnvironment ready
ApplicationContextInitializedEventContext initialized
ApplicationPreparedEventContext prepared
ApplicationStartedEventApplication started
ApplicationReadyEventApplication ready
ApplicationFailedEventStartup failure

9. Shutdown Lifecycle

Shutdown Triggered
        │
        ▼
Context Closing
        │
        ▼
PreDestroy Methods
        │
        ▼
Disposable Beans Destroyed
        │
        ▼
Embedded Server Shutdown

10. Summary

StageDescription
StartSpringApplication.run() executed
EnvironmentProperties loaded
Context CreationSpring container initialized
Bean CreationBeans instantiated
Dependency InjectionDependencies injected
Initialization@PostConstruct
ReadyApplicationReadyEvent
RunningApplication serving requests
Shutdown@PreDestroy methods