Saya belajar untuk sertifikasi Spring Core dan saya memiliki beberapa keraguan tentang bagaimana Spring menangani siklus hidup kacang dan khususnya tentang prosesor pasca kacang .
Jadi saya punya skema ini:
Cukup jelas bagi saya apa artinya:
Langkah-langkah berikut ini berlangsung di fase Load Bean Definitions :
The @Configuration kelas diproses dan / atau @Components -scan untuk dan / atau file XML yang diurai.
Definisi kacang ditambahkan ke BeanFactory (masing-masing diindeks di bawah id-nya)
Kacang BeanFactoryPostProcessor khusus dipanggil, dapat memodifikasi definisi kacang apa pun (misalnya untuk penggantian nilai tempat penampung properti).
Kemudian langkah-langkah berikut berlangsung dalam fase pembuatan kacang :
Setiap kacang dibuat dengan bersemangat secara default (dibuat dalam urutan yang benar dengan dependensi yang dimasukkan).
Setelah injeksi ketergantungan, setiap biji melewati fase pasca-pemrosesan di mana konfigurasi dan inisialisasi lebih lanjut dapat terjadi.
Setelah pasca pemrosesan, kacang sepenuhnya diinisialisasi dan siap digunakan (dilacak oleh idnya hingga konteksnya dihancurkan)
Ok, ini cukup jelas bagi saya dan saya juga tahu bahwa ada dua jenis prosesor posting kacang yaitu:
Penginisialisasi: Inisialisasi kacang jika diinstruksikan (mis. @PostConstruct).
dan Semua sisanya: yang memungkinkan konfigurasi tambahan dan yang dapat berjalan sebelum atau setelah langkah inisialisasi
Dan saya memposting slide ini:
Jadi sangat jelas bagi saya apa penginisialisasi pengolah posting kacang (mereka adalah metode yang dijelaskan dengan anotasi @PostContruct dan yang secara otomatis dipanggil segera setelah metode penyetel (jadi setelah injeksi ketergantungan), dan saya tahu bahwa saya dapat menggunakannya untuk melakukan beberapa batch inisialisasi (seperti mengisi cache seperti pada contoh sebelumnya).
Tapi apa sebenarnya yang mewakili prosesor posting kacang lainnya? Apa yang kami maksud ketika kami mengatakan bahwa langkah-langkah ini dilakukan sebelum atau setelah fase inisialisasi ?
Jadi kacang saya dibuat instance-nya dan dependensinya dimasukkan, lalu fase inisialisasi selesai (dengan eksekusi metode beranotasi @PostContruct ). Apa yang kami maksud dengan mengatakan bahwa Prosesor Bean Post digunakan sebelum fase inisialisasi? Artinya itu terjadi sebelum eksekusi metode beranotasi @PostContruct ? Apakah ini berarti bahwa ini bisa terjadi sebelum injeksi ketergantungan (sebelum metode penyetel dipanggil)?
Dan apa sebenarnya yang kami maksud ketika kami mengatakan bahwa itu dilakukan setelah langkah inisialisasi . Artinya itu terjadi setelah itu eksekusi metode beranotasi @PostContruct , atau apa?
Saya dapat dengan mudah membayangkan di kepala saya mengapa saya memerlukan metode beranotasi @PostContruct tetapi saya tidak dapat menemukan beberapa contoh tipikal dari jenis prosesor posting kacang lainnya, dapatkah Anda menunjukkan kepada saya beberapa contoh khas kapan digunakan?