Memahami Implementasi Application Context pada Spring Framework
Jika pembaca telah mengikuti tulisan sebelumnya yang berjudul Membuat Program Pertama dengan Spring Framework (Bagian -2). Penulis sempat menyinggung tentang interface ApplicationContext
yang merupakan jantung dari framewok ini.
Interface ApplicationContext
sendiri memiliki beberapa implementasi yang dapat digunakan sesuai kebutuhan aplikasi, beberapa diantaranya adalah sebagai berikut
ClassPathXmlApplicationContext
: Ini adalah implementasi yang digunakan pada pembahasan yang lalu, sekaligus paling sederhana, karena hanya memuat file – file XML yang berlokasi di classpathAnnotationConfigApplicationContext
: adalah implementasiApplicationContext
yang membaca konfigurasi berbasis java.AnnotationConfigWebApplicationContext
: Membaca aplication context dari satu atau lebih konfigurasi java-based pada aplikasi web.FileSystemXmlApplicationContext
: Hampir sama denganClassPathXMLApplicationContext
, namun bedanya file xml yang dimuat berada di lingkup file systemXmlWebApplicationContext
: Sebagaimana namnya, implementasi ini hampir sama denganAnnotationConfigWebApplicationContext
, yang memuat application context untuk aplikasi web, namun format file yang dimuat adalah XML
Penulis akan membahas beberapa diantara penggunaan implementasi dari interface ApplicationContext
untuk aplikasi web pada beberapa artikel lain. Untuk saat ini, penulis akan membahas perbedaan penggunaan FileSystemXmlApplicationContext
dengan ClassPathXmlApplicationContext
. Perhatikan pada contoh di artikel yang berjudul Membuat Program Pertama dengan Spring Framework (Bagian -2), dimana pada class App
digunakan ClassPathXmlApplicationContext
pada baris 21
ApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml");
Programmer dapat menggantinya dengan menggunakan FileSystemXmlApplicationContext
menjadi sebagai berikut
ApplicationContext appCtx = new FileSystemXmlApplicationContext("D:/akademi/halo-spring-2/src/main/resources/applicationContext.xml");
Dalam konteks ini, penulis menyimpan file ApplicationContext di folder D:/akademi/halo-spring-2/src/main/resources/applicationContext.xml
, pembaca dapat mengubahnya sesuai path absolut dimana file XML disimpan di sistem komputer yang digunakan
Jika konfigurasi yang dibuat adalah java-based dan bukan XML, maka programmer dapat menggunakan AnnotationConfigApplicationContext
menjadi sebagai berikut
ApplicationContext appCtx = new AnnotationConfigApplicationContext(AppConfig.class);
Dimana class AppConfig
merupakan class konfigurasi berbasis Java. Pembaca dapat melihat source code dari penggunaan AnnotationConfigApplicationContext
pada tautan ini
- Konfigurasi berbasis XML atau Java?
Sebagaimana pembaca ketahui bahwa ada dua cara menuliskan konfigurasi bean pada Spring secara eksplisit, yaitu
- Konfigurasi eksplisit berbasis XML
- Konfigurasi eksplisit berbasis Java
Sebenarnya ada satu konfigurasi tambahan lagi yang merupakan konfigurasi implisit menggunakan metode Implicit bean discovery dan automatic wiring. Dengan metode ini programmer mebiarkan Spring yang mencari sendiri bean – bean mana saja yang dikonfigurasi dan otomatis meng-inject-nya ke Bean yang memerlukan.
Mana yang seharusnya dipilih sebenarnya ada pada preferensi masing – masing programmer apakah lebih menyukai penulisan konfigurasi berbasis java atau XML, atau mungkin memadupadankan semua cara penulisan tersebut. Masing – masing cara memiliki kelebihan dan kekurangannya masing – masing.
Dalam prakteknya nanti ketika programmer membuat project untuk mesin production. Subrutin merekomendasikan menggunakan pilihan ketiga yaitu mengandalkan konfigurasi implisit, selama itu dapat dicapai dengan konfigurasi implisit (subrutin akan membahasnya pada artikel yang lain tentang autowired). Sisanya, dapat digunakan kedua pendekatan berbasis XML ataupun Java, semua terserah pada programmer
Ayo dong mas, bahas yang autowired nanggung ini……
😀