Kata pengantar
Dalam artikel sebelumnya, disebutkan bahwa melalui antarmuka seperti inisialisasi dan sekali pakai, beberapa operasi khusus dapat dilakukan untuk inisialisasi dan penghancuran kacang. Satu hal yang perlu diperhatikan adalah hanya operasi setelah kacang dipakai oleh wadah. Di dunia musim semi, jika Anda ingin melakukan sesuatu tentang proses instantiasi, sebagai pengembang bisnis biasa, jelas Anda tidak perlu mewarisi aplikasi atau beanfactory, karena Container Spring memberi kita beberapa antarmuka, yang memungkinkan kita untuk memperluas operasi inisialisasi oleh Beanpocory dalam bentuk plug -in, termasuk protagonis kita hari ini - Beanpostoresor.
Kode sumber, mengintip
Penggunaan ini sangat sederhana. Hanya memiliki dua metode. Kami menerapkan beanpostprocessor kami sendiri, dan Spring dapat secara otomatis mendaftarkannya ke dalam wadah.
di mana metode sebelumnya dieksekusi setelah instantiasi kacang, setelah pengaturan properti tetapi sebelum metode inisialisasi; Setelah metode dieksekusi setelah berbagai metode inisialisasi.
Berbicara tentang hal ini, beberapa orang mungkin bertanya -tanya, apa perbedaan antara ini dan antarmuka inisialisasi lainnya dalam siklus hidup? Metode inisialisasi lainnya juga dapat memodifikasi kacang. Pertanyaan ini bagus. Mari kita bicara tentang perbedaan esensial antara antarmuka ini dan InitializingBean Disposable Interface dan Metode Init Destroy yang disesuaikan.
Ada dua BPP khusus di sini. Saya harus mengatakan bahwa jika Anda perlu menyesuaikan anotasi yang mirip dengan fungsi injeksi @Autowire atau @injeksi (Anda dapat menggunakan InjectionMetadata), BPP biasa mungkin tidak memenuhi kebutuhan Anda, dan Anda dapat menggunakan dua BPP khusus.
MergedBeandefinitionPostProcessor (selanjutnya disebut MBDPP)
InstantiationAwarebeanPostProcessor (selanjutnya disebut IABPP)
Mereka semua mewarisi dari BPP, tetapi titik masuk dalam proses menciptakan kacang musim semi berbeda dari BPP biasa.
Antarmuka InstantiationAwarebeanPostProcessor
Lihat komentarnya
Metode PostprocessBeforeInstantiasi
Periksa metode CreateBean dari AbstractAutowIrecapableBeanFactory (metode ini adalah metode inti untuk membuat kacang dalam wadah musim semi). Anda dapat melihat bahwa postprocessBeforeInstantiasi adalah sebelum instantiasi kacang, postprocessafterinstantiasi ditetapkan setelah instantiasi dan sebelum injeksi autowire. Ini umumnya digunakan secara internal dalam kerangka musim semi, tetapi ada potensi besar di sini. Gunakan postprocessBeforeInstantiasi untuk menghasilkan objek proksi (metode umum adalah membuat postprocessorbeforeInstantiation return not null, yang akan mengganggu proses selanjutnya dalam membuat instance kacang. Objek yang dikembalikan dengan metode ini akan digunakan sebagai instance bean). Lihat kode sumbernya:
Metode PostprocessPropertyValues
Gunakan PostProcessPropertyValues untuk menyelesaikan berbagai operasi pada properti, metadata parsing dalam anotasi, dll. Injeksi @Autowire Spring, JSR330 @Inject, dan @Resource JSR250 dan operasi injeksi lainnya selesai melalui metode ini.
Antarmuka ini digunakan di musim semi, dan siswa yang tertarik dapat membaca kode sumber. Berikut ini adalah dua implementasi khas.
AutowiredAnnotationBeanPostProcessor
AbstractAutoproxycreator
Antarmuka MergedBeandefinitionPostProcessor
Antarmuka ini melewati rootbeandefinition, yang memungkinkan kita untuk memodifikasi definisi kacang. @AUtuWiredAnnotationBeanPostProcessor menggunakan metode ini untuk memeriksa dan mendaftarkan anggota yang perlu disuntikkan.
BeanFactoryPostProcessor (BFPP)
Selain beanpostprocessor, ada hal lain yang diketahui semua orang, yaitu, BeanfactoryPostProcessor
BFPP adalah plugin ekstensi penting untuk BeanFactory dan dapat disesuaikan dengan beandefinition. Perbedaan utamanya dari BPP adalah:
Oke, setelah mengatakan banyak hal, mari kita lihat diagram alur umum penciptaan kacang musim semi. Hanya node yang lebih kritis yang ditandai di sini.
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.