Kacang yang Ditentukan XML di Spring Boot

1. Perkenalan

Sebelum Spring 3.0, XML adalah satu-satunya cara untuk mendefinisikan dan mengkonfigurasi kacang. Spring 3.0 memperkenalkan JavaConfig , memungkinkan kita untuk mengkonfigurasi kacang menggunakan kelas Java. Namun, file konfigurasi XML masih digunakan sampai sekarang.

Dalam tutorial ini, kita akan membahas bagaimana mengintegrasikan konfigurasi XML ke dalam Spring Boot .

2. Anotasi @ImportResource

The @ImportResource penjelasan memungkinkan kita untuk mengimpor satu atau lebih sumber daya yang mengandung definisi kacang.

Katakanlah kita memiliki file beans.xml dengan definisi bean:

Untuk menggunakannya dalam aplikasi Spring Boot, kita dapat menggunakan anotasi @ImportResource , yang memberitahukannya di mana menemukan file konfigurasi:

@Configuration @ImportResource("classpath:beans.xml") public class SpringBootXmlApplication implements CommandLineRunner { @Autowired private Pojo pojo; public static void main(String[] args) { SpringApplication.run(SpringBootXmlApplication.class, args); } }

Dalam kasus ini, contoh Pojo akan diinjeksi dengan kacang yang didefinisikan dalam beans.xml .

3. Mengakses Properti dalam Konfigurasi XML

Bagaimana dengan menggunakan properti dalam file konfigurasi XML? Misalkan kita ingin menggunakan properti yang dideklarasikan di file application.properties :

sample=string loaded from properties!

Mari perbarui definisi Pojo , di beans.xml , untuk menyertakan properti sampel :

Selanjutnya, mari kita verifikasi apakah properti tersebut disertakan dengan benar:

@RunWith(SpringRunner.class) @SpringBootTest(classes = SpringBootXmlApplication.class) public class SpringBootXmlApplicationIntegrationTest { @Autowired private Pojo pojo; @Value("${sample}") private String sample; @Test public void whenCallingGetter_thenPrintingProperty() { assertThat(pojo.getField()) .isNotBlank() .isEqualTo(sample); } }

Sayangnya, pengujian ini akan gagal karena, secara default, file konfigurasi XML tidak dapat menyelesaikan placeholder . Namun, kita dapat menyelesaikannya dengan menyertakan anotasi @EnableAutoConfiguration :

@Configuration @EnableAutoConfiguration @ImportResource("classpath:beans.xml") public class SpringBootXmlApplication implements CommandLineRunner { // ... }

Anotasi ini memungkinkan konfigurasi otomatis dan upaya untuk mengkonfigurasi kacang.

4. Pendekatan yang Direkomendasikan

Kami dapat terus menggunakan file konfigurasi XML. Tetapi kami juga dapat mempertimbangkan untuk memindahkan semua konfigurasi ke JavaConfig karena beberapa alasan. Pertama, mengkonfigurasi kacang di Java adalah tipe-aman , jadi kita akan menemukan kesalahan jenis pada waktu kompilasi. Selain itu, konfigurasi XML bisa bertambah besar , sehingga sulit untuk dipelihara.

5. Kesimpulan

Di artikel ini, kami melihat cara menggunakan file konfigurasi XML untuk menentukan kacang kami dalam aplikasi Spring Boot. Seperti biasa, kode sumber dari contoh yang kami gunakan tersedia di GitHub.