Spring PostConstruct dan PreDestroy Annotations

1. Pengenalan

Musim bunga membolehkan kita melampirkan tindakan khusus untuk penciptaan dan pemusnahan kacang. Kita boleh, misalnya, melakukannya dengan menerapkan antara muka InitializingBean dan DisposableBean .

Dalam tutorial pendek ini, kita akan melihat kemungkinan kedua: @PostConstruct dan @PreDestroy penjelasan.

2. @PostConstruct

Kaedah panggilan musim bunga dianotasikan dengan @PostConstruct hanya sekali, hanya setelah permulaan sifat kacang . Perlu diingat bahawa kaedah ini akan dijalankan walaupun tidak ada yang dapat dimulakan.

Kaedah yang diberi penjelasan dengan @PostConstruct boleh mempunyai tahap akses apa pun tetapi tidak boleh statik.

Salah satu contoh penggunaan @PostConstruct adalah mengisi pangkalan data. Sebagai contoh, semasa pengembangan, kami mungkin ingin membuat beberapa pengguna lalai:

@Component public class DbInit { @Autowired private UserRepository userRepository; @PostConstruct private void postConstruct() { User admin = new User("admin", "admin password"); User normalUser = new User("user", "user password"); userRepository.save(admin, normalUser); } }

Contoh di atas akan memulakan UserRepository terlebih dahulu dan kemudian menjalankan kaedah @PostConstruct .

3. @PreDestroy

Kaedah yang dijelaskan dengan @PreDestroy hanya dijalankan sekali, sebelum Spring mengeluarkan kacang dari konteks aplikasi.

Sama seperti dengan @PostConstruct , kaedah yang dijelaskan dengan @PreDestroy boleh mempunyai tahap akses apa pun tetapi tidak boleh statik.

@Component public class UserRepository { private DbConnection dbConnection; @PreDestroy public void preDestroy() { dbConnection.close(); } }

Tujuan kaedah ini adalah untuk melepaskan sumber atau melakukan tugas pembersihan lain sebelum kacang hancur, misalnya menutup sambungan pangkalan data.

4. Java 9+

Perhatikan bahawa kedua-dua @PostConstruct dan @PreDestroy anotasi adalah sebahagian daripada Java EE. Dan sejak Java EE sudah tidak digunakan lagi di Java 9 dan dihapus di Java 11, kita harus menambahkan ketergantungan tambahan untuk menggunakan penjelasan ini:

 javax.annotation javax.annotation-api 1.3.2 

5. Kesimpulan

Dalam tutorial pendek ini, kita telah belajar bagaimana untuk menggunakan @PostConstruct dan @PreDestroy penjelasan.

Seperti biasa semua kod sumber tersedia di GitHub.