ApplicationContext, Spring Framework'te, uygulamanın yapılandırma bilgilerini ve diğer bileşenlerini yönetmek için kullanılan merkezi bir arabirimdir. ApplicationContext'in yaşam döngüsü, Spring uygulamalarının başlatılması, çalıştırılması ve kapanması süreçlerini kapsar. İşte ApplicationContext'in temel yaşam döngüsü adımları:
Yükleme (Loading):
- Configuration Metadata (Yapılandırma Meta Verisi): XML dosyaları, Java anotasyonları veya Java yapılandırma sınıfları ile sağlanan yapılandırma bilgileri yüklenir.
Başlatma (Instantiation):
- ApplicationContext nesnesi oluşturulur ve yapılandırma meta verisi kullanılarak başlatılır.
Kayıt (Registration):
- Bean Definition (Bean Tanımları) yüklenir ve ApplicationContext'e kayıt edilir. Bu aşamada Spring, hangi bean'lerin oluşturulacağını ve nasıl yapılandırılacağını belirler.
Ön İşleme (Pre-Instantiation):
- Bean Post Processors: Spring, BeanPostProcessor arayüzünü uygulayan sınıfları tanır ve bean'ler oluşturulmadan önce veya sonra bu işleyicileri kullanır.
Bean'lerin Oluşturulması (Bean Instantiation):
- Singleton Scope (Tekil Kapsam): Tekil kapsamda olan bean'ler bu aşamada oluşturulur.
- Prototype Scope (Prototip Kapsam): Prototip kapsamda olan bean'ler, talep üzerine daha sonra oluşturulur.
Bağımlılıkların Enjeksiyonu (Dependency Injection):
- Setter Injection ve Constructor Injection: Spring, bean'ler oluşturulurken bağımlılıklarını enjekte eder.
İlk Çalıştırma (Initialization):
- InitializingBean ve @PostConstruct: Bean'ler oluşturulduktan sonra InitializingBean arayüzü veya @PostConstruct anotasyonu kullanılarak başlatma işlemleri gerçekleştirilir.
Olay Yayımı (Event Publication):
- ApplicationContext olaylar yayınlayabilir (publish) ve dinleyiciler (listeners) bu olayları dinleyebilir. Örneğin, ContextRefreshedEvent gibi olaylar.
Kullanım (Usage):
- ApplicationContext başlatıldıktan sonra, bean'ler uygulama tarafından kullanılmaya başlanır.
Kapanış (Shutdown):
- Kapanış İşlemleri: ApplicationContext kapanırken, tüm tekil bean'ler yok edilir.
- DisposableBean ve @PreDestroy: Kapanış işlemleri sırasında DisposableBean arayüzü veya @PreDestroy anotasyonu kullanılarak temizleme işlemleri gerçekleştirilir.
Yok Edilme (Destruction):
- ApplicationContext, kaynaklarını serbest bırakır ve kapatılır.
Bu adımlar, Spring uygulamalarının düzgün bir şekilde başlatılması, çalıştırılması ve kapatılmasını sağlar. ApplicationContext'in bu yaşam döngüsü, Spring'in güçlü bağımlılık enjeksiyonu ve yönetim özelliklerini kullanarak uygulama bileşenlerinin yönetimini kolaylaştırır.