Panduan untuk Spring BeanFactory

1. Perkenalan

Artikel ini akan berfokus pada eksplorasi API Spring BeanFactory .

Antarmuka BeanFactory menyediakan mekanisme konfigurasi yang sederhana namun fleksibel untuk mengelola objek dalam bentuk apa pun melalui container IoC Spring. Mari kita lihat beberapa hal mendasar sebelum menyelami lebih dalam ke API pusat Spring ini.

2. Dasar - Kacang dan Wadah

Sederhananya, kacang adalah objek java yang membentuk tulang punggung aplikasi Spring dan dikelola oleh container IoC Spring. Selain dikelola oleh wadah, tidak ada yang istimewa tentang kacang (dalam hal lain itu adalah salah satu dari banyak objek dalam aplikasi).

Wadah Spring bertanggung jawab untuk membuat instance, mengkonfigurasi, dan merakit biji. Container mendapatkan informasinya tentang objek apa yang akan dibuat instance-nya, dikonfigurasi, dan dikelola dengan membaca metadata konfigurasi yang kita tentukan untuk aplikasi.

3. Ketergantungan Maven

Mari tambahkan ketergantungan Maven yang diperlukan ke file pom.xml . Kami akan menggunakan dependensi Spring Beans untuk menyiapkan BeanFactory:

 org.springframework spring-beans 5.2.8.RELEASE 

4. Antarmuka BeanFactory

Sangat menarik untuk memulai dengan melihat definisi antarmuka dalam paket org.springframework.beans.factory dan mendiskusikan beberapa API pentingnya di sini.

4.1. The getBean () API

Berbagai versi metode getBean () mengembalikan instance dari kacang yang ditentukan, yang dapat dibagikan atau independen di seluruh aplikasi.

4.2. The containsBean () API

Metode ini mengkonfirmasi apakah pabrik kacang ini berisi kacang dengan nama yang diberikan. Lebih khusus lagi, ini menegaskan jika getBean (java.lang.String) dapat memperoleh instance kacang dengan nama yang diberikan.

4.3. The isSingleton () API

The isSingleton API dapat digunakan untuk query jika kacang ini adalah tunggal bersama. Itu jika getBean (java.lang.String) akan selalu mengembalikan instance yang sama.

4.4. The isPrototype () API

API ini akan mengonfirmasi jika getBean (java.lang.String) mengembalikan instance independen - artinya kacang dikonfigurasi dengan cakupan prototipe, atau tidak.

Hal penting yang perlu diperhatikan adalah metode ini mengembalikan false tidak secara jelas menunjukkan objek tunggal. Ini menunjukkan instance non-independen, yang mungkin terkait dengan cakupan lain juga.

Kita perlu menggunakan operasi isSingleton (java.lang.String) untuk secara eksplisit memeriksa instance tunggal bersama.

4.5. API lainnya

Sementara metode isTypeMatch (String name, Class targetType) memeriksa apakah kacang dengan nama yang diberikan cocok dengan jenis yang ditentukan, getType (nama string) berguna dalam mengidentifikasi jenis kacang dengan nama yang diberikan.

Akhirnya, getAliases (String name) mengembalikan alias untuk nama kacang yang diberikan, jika ada.

5. API BeanFactory

BeanFactory menyimpan definisi kacang dan membuat instance-nya setiap kali diminta oleh aplikasi klien - yang artinya:

  • Ini menangani siklus hidup kacang dengan membuat instance dan memanggil metode penghancuran yang sesuai
  • Ia mampu membuat asosiasi antara objek dependen sambil membuat instance-nya
  • Penting untuk menunjukkan bahwa BeanFactory tidak mendukung Injeksi ketergantungan berbasis Anotasi sedangkan ApplicationContext , superset BeanFactory mendukungnya.

Bacalah tentang Konteks Aplikasi untuk mengetahui apa yang dapat dilakukannya ekstra.

6. Mendefinisikan Bean

Mari kita definisikan kacang sederhana:

public class Employee { private String name; private int age; // standard constructors, getters and setters }

7. Konfigurasi BeanFactory dengan XML

Kita dapat mengkonfigurasi BeanFactory dengan XML. Mari buat file bean factory-example.xml:

Perhatikan bahwa kami juga telah membuat alias untuk kacang karyawan .

8. BeanFactory dengan ClassPathResource

ClassPathResource termasuk dalam paket org.springframework.core.io . Mari kita jalankan pengujian cepat dan inisialisasi XmlBeanFactory menggunakan ClassPathResource seperti yang ditunjukkan di bawah ini:

public class BeanFactoryWithClassPathResourceTest { @Test public void createBeanFactoryAndCheckEmployeeBean() { Resource res = new ClassPathResource("beanfactory-example.xml"); BeanFactory factory = new XmlBeanFactory(res); Employee emp = (Employee) factory.getBean("employee"); assertTrue(factory.isSingleton("employee")); assertTrue(factory.getBean("employee") instanceof Employee); assertTrue(factory.isTypeMatch("employee", Employee.class)); assertTrue(factory.getAliases("employee").length > 0); } }

9. Kesimpulan

Dalam artikel singkat ini, kita belajar tentang metode utama yang ditawarkan Spring BeanFactory API dan contoh untuk menggambarkan konfigurasi dan penggunaannya.

Kode yang mendukung contoh-contoh ini semuanya tersedia di GitHub.