>Spring IoC

>Mengapa ada IoC ?

Seperti pernah diutarakan oleh ilmuwan Albert Einstein, “bahwa segala sesuatu seharusnya sesederhana mungkin, tapi tidak untuk menjadikannya lebih sederhana”. Hal yang sama juga berlaku pada aplikasi enterprise dari Java. Sebagai kunci dari filosofi ini adalah bahwa framework merupakan basis kerja yang menyederhanakan kompleksitas yang dihasilkan oleh kebutuhan pengembang akan transaksi, keamanan, dan persisten (database). Framework akan berusaha sebaik mungkin untuk menyederhanakan antarmukanya sehingga memudahkan pengembang dalam mengembangkan aplikasi berskala enterprise.

What Is IoC?

IoC merupakan suatu mekanisme untuk melakukan injeksi terhadap suatu obyek dari suatu kelas dalam proses pembuatan (object creation), inisialisasi, pemberian nilai properti, dan penghapusan obyek. Hal ini dimungkinkan dalam Spring karena telah memiliki interface untuk melakukan injeksi tersebut, dalam hal ini adalah Application Context. Ini adalah sebuah file XML yang didalamnya berisikan informasi mengenai bean (obyek dari kelas) yang akan diinjeksi. Berikut ini contoh injeksi yang dapat dilakukan spring terhadap bean.

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “http://www.springframework.org/dtd/spring-beans.dtd”&gt;

<beans>
<bean id=”atm”
class=”jeni.AutomatedTellerMachine”
init-method=”initializeATM” destroy-method=”destroyATM”/>
<bean id=”atm2″
class=”jeni.AutomatedTellerMachine”
init-method=”initializeATM” destroy-method=”destroyATM”>
<property name=”name” value=”ATM Mandiri”/>
</bean>
</beans>

dari contoh appContext.xml diatas dapat dijelaskan bahwa Spring melakukan injeksi terhadap bean (obyek) dari kelas jeni.AutomatedTellerMachine. Pada bean atm hanya dilakukan pembuatan obyek dan pendefinisian metode inisialisasi dan penghapusan. Kemudian pada atm2 ditambahkan dengan penentuan nilai dari properti name yang dimiliki atm2. Pengaturan properti ini akan secara otomatis memanggil metode setter yang sesuai, dalam hal ini adalah metode setName(String name) milik kelas jeni.AutomatedTellerMachine.

Spring memiliki tiga jenis application context:
– FileSystem Application Context lokasi real di media penyimpanan
– ClassPath ApplicationContext lokasi ditentukan relatif berdasarkan classpath
– Web Application Context. Lokasi ditentukan berdasarkan direktori WEB-INF dari standar direktori aplikasi web.

Secara konsep gambaran ini mirip dengan pembuatan obyek seperti biasanya :

jeni.AutomatedTellerMachine atm = new jeni.AutomatedTellerMachine(); atm.initializeATM(); jeni.AutomatedTellerMachine atm2 = new jeni.AutomatedTellerMachine(); atm2.setName(“ATM Mandiri”); atm2.initializeATM();
Dari injeksi diatas berikut ini contoh implementasi nya :

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import jeni.AutomatedTellerMachine;

class MainIOC{
public static void main(String[] args){
String[] files = {“/appContext.xml”};
ApplicationContext applicationContext= new ClassPathXmlApplicationContext(files);
System.out.println(“====================================================================”);
System.out.println(“Pengambilan bean ATM”);
AutomatedTellerMachine atm = (AutomatedTellerMachine) applicationContext.getBean(“atm2”);
atm.withdraw(100.0f);
AutomatedTellerMachine atm2 = (AutomatedTellerMachine) applicationContext.getBean(“atm2”);
System.out.println(“Nama ATM setelah diinisialisasi : ” + atm2.getName());

if(atm == atm2){
System.out.println(“Sama”);
}else{
System.out.println(“Tidak Sama”);
}
}
}

kita mengambil bean (obyek) yang telah didefinisikan dalam appContext.xml menggunakan metode getBean() dari kelas org.springframework.context.support.ClassPathXmlApplicationContext.

Hasil akhir dari aplikasi ini setelah dijalankan adalah berikut ini :

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s