Spring Core sertifikası için çalışıyorum ve Spring'in fasulye yaşam döngüsünü nasıl yönettiği ve özellikle fasulye post işlemcisi hakkında bazı şüphelerim var .
Yani şu şemaya sahibim:
Bunun ne anlama geldiği benim için oldukça açık:
Fasulye Tanımlarını Yükle aşamasında aşağıdaki adımlar gerçekleşir :
@Configuration sınıflar işlenir ve / veya @Components ve / veya taranır XML dosyaları çözümlenir.
BeanFactory'ye eklenen Bean tanımları (her biri kendi kimliği altında dizine eklenir)
Özel BeanFactoryPostProcessor çekirdeklerinin çağrılması, herhangi bir çekirdeğin tanımını değiştirebilir (örneğin, özellik-yer tutucu değerleri değiştirmeleri için).
Daha sonra çekirdek oluşturma aşamasında aşağıdaki adımlar gerçekleşir :
Her bir çekirdek varsayılan olarak hevesle örneklenir (bağımlılıkları enjekte edilerek doğru sırada oluşturulur).
Bağımlılık enjeksiyonundan sonra her çekirdek, daha fazla konfigürasyon ve başlatmanın gerçekleşebileceği bir işlem sonrası aşamasından geçer.
İşlem sonrası işlemden sonra çekirdek tamamen başlatılır ve kullanıma hazır hale gelir (içerik yok olana kadar kimliği ile izlenir)
Tamam, bu benim için oldukça açık ve ayrıca iki tür fasulye sonrası işlemcisi olduğunu da biliyorum :
Başlatıcılar: Talimat verildiyse çekirdeği başlatın (ör. @PostConstruct).
ve Geri kalan her şey: ek yapılandırmaya izin veren ve başlatma adımından önce veya sonra çalışabilir
Ve bu slaydı yayınlıyorum:
Bu yüzden benim için başlatıcıların post işlemcileri ne işe yaradığı çok açık (bunlar @PostContruct ek açıklaması ile açıklanmış yöntemlerdir ve ayarlayıcı yöntemlerden hemen sonra otomatik olarak çağrılırlar (yani bağımlılık enjeksiyonundan sonra) ve bunu kullanabileceğimi biliyorum bazı başlatma toplu işlemleri gerçekleştirin (önceki örnekte olduğu gibi bir önbellek doldurduğunuz gibi).
Peki diğer fasulye post işlemcisini tam olarak ne temsil ediyor? Bu adımların başlangıç aşamasından önce veya sonra yapıldığını söylediğimizde ne demek istiyoruz? ?
Böylece benim çekirdeklerim somutlaştırıldı ve bağımlılıkları enjekte edildi, böylece başlatma aşaması tamamlandı ( @PostContruct açıklamalı yönteminin yürütülmesiyle ). Başlatma aşamasından önce Bean Post İşlemcisinin kullanıldığını söylemekle ne demek istiyoruz? Bu, @PostContruct açıklamalı yöntem yürütmeden önce gerçekleştiği anlamına mı geliyor? Bağımlılık enjeksiyonundan önce olabileceği anlamına mı geliyor (bundan önce ayarlayıcı yöntemler çağrılır)?
Ve başlatma adımından sonra yapıldığını söylediğimizde tam olarak ne demek istiyoruz ? Bu, @PostContruct açıklamalı bir yöntemin yürütülmesinden sonra gerçekleştiği anlamına gelir veya ne?
Neden bir @PostContruct açıklamalı yönteme ihtiyacım olduğunu kolayca anlayabiliyorum, ancak diğer tür fasulye post işlemcisinin tipik bir örneğini bulamıyorum, bana ne zaman kullanıldığına dair tipik bir örnek gösterebilir misiniz?