Saya mengonversi pengontrol ke versi anotasi yang lebih baru. Di versi lama saya digunakan untuk menentukan metode init di springmvc-servlet.xml menggunakan:
<beans>
<bean id="myBean" class="..." init-method="init"/>
</beans>
Bagaimana cara menentukan metode init menggunakan versi anotasi?
java
spring
annotations
controller
Krt_Malta
sumber
sumber
Jawaban:
Kamu bisa memakai
sumber
Alternatifnya Anda bisa meminta kelas Anda mengimplementasikan
InitializingBean
antarmuka untuk menyediakan fungsi callback (afterPropertiesSet()
) yang akan dipanggil oleh ApplicationContext ketika kacang dibuat.sumber
Ada beberapa cara untuk menghentikan proses inisialisasi di Spring. Jika Anda harus menginisialisasi semua kacang dan melakukan autowire / menyuntikkannya, setidaknya ada dua cara yang saya ketahui yang akan memastikan hal ini. Saya hanya punya testet yang kedua tapi saya percaya keduanya bekerja sama.
Jika Anda menggunakan @Bean, Anda bisa mereferensikan dengan initMethod, seperti ini.
Jika Anda menggunakan @Component, Anda dapat membuat anotasi dengan @EventListener seperti ini.
Dalam kasus saya, saya memiliki sistem warisan di mana saya sekarang menggunakan IoC / DI di mana Spring Boot adalah kerangka kerja yang dipilih. Sistem lama membawa banyak dependensi melingkar ke tabel dan oleh karena itu saya harus banyak menggunakan ketergantungan penyetel. Itu membuat saya pusing karena saya tidak bisa mempercayai @PostConstruct karena autowiring / injeksi oleh penyetel belum dilakukan. Urutannya adalah konstruktor, @PostConstruct lalu penyetel yang dipasang secara otomatis. Saya menyelesaikannya dengan anotasi @EventListener yang akan berjalan terakhir dan pada waktu yang "sama" untuk semua kacang. Contoh tersebut juga menunjukkan implementasi InitializingBean.
Saya memiliki dua kelas (@Component) dengan ketergantungan satu sama lain. Kelas terlihat sama untuk tujuan contoh ini hanya menampilkan salah satu dari mereka.
Ini adalah keluaran log yang menunjukkan urutan panggilan saat penampung dimulai.
Seperti yang Anda lihat, @EventListener dijalankan terakhir setelah semuanya siap dan dikonfigurasi.
sumber
sumber