Kusandriadi.com I Just Want to Share

[Java] Mengenal Spring Framework : Dependency Injection

Spring merupakan salah satu framework DI yang cukup populer dan banyak digunakan oleh developer Java sekarang ini. Bahkan saya pernah membaca salah satu thread di Java User Group Indonesia bahwa Spring dan Hibernate sudah menjadi standar untuk membuat aplikasi dengan Java. Mengapa kita harus belajar Spring? tentunya “ikut-ikutan teman” adalah jawaban yang kurang bisa di terima, hehe….Ada banyak teknologi yang diadopsi oleh Spring, tapi core dari Spring adalah DI atau IOC yang benar-benar memudahkan kita untuk membangun sebuah aplikasi, membuat code kita menjadi lebih rapih dan lebih simple, kita tidak perlu lagi menginisialisasi sebuah object, karena nantinya akan di load oleh Spring yang tentu saja sudah kita siapkan di XML, tapi dalam beberapa kasus, memang tidak semua object harus kita siapkan di Spring Container. Sebenarnya framework seperti Struts2 dan JSF juga menerapkan IOC, tapi kedua framework tersebut dikhususkan untuk Java Enterprise, yang tentu saja membuat pasar mereka tidak seluas Spring.

Spring sampai saat ini sudah mencapai versi 3.0, tidak ada lagi alasan eneg melihat XML ratusan baris karena sudah menerapkan anotasi yang membuat Spring terlihat sangat simple sekali. Berikut contoh simple nya, pertama-tama kita buat dulu sebuah kelas entity bernama People seperti ini :


public class People {

private String nim;

private String nama;

public String getNim() {

return nim;

}

public void setNim(String nim) {

this.nim = nim;

}

public String getNama() {

return nama;

}

public void setNama(String nama) {

this.nama = nama;

}

}

Kelas People adalah sebuah kelas entity biasa dengan variabel nim dan nama bertipe String, jangan lupa untuk membuat getter dan setter nya. Setelah itu kita buat file Spring-ctx.xml seperti dibawah ini :


<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:util="http://www.springframework.org/schema/util"

xmlns:p="http://www.springframework.org/schema/p"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd

http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">

<bean id="people" class="com.kusandriadi.entity.People">

<property name="nim" value="0811503721" />

<property name="nama" value="Kus Andriadi" />

</bean>

</beans>

pada contoh spring-ctx diatas, kita membuat bean bernama people yang kita rujuk pada class People, disitu ada tag property yang mempunyai atribut nim dan nama, kita juga sudah menyiapkan value dari masing-masing property, value ini lah yang nantinya akan diinject ke dalam program kita oleh Spring. Adapun nama property tersebut adalah variabel yang telah kita siapkan pada kelas People sebelumnya, setelah itu buatlah kelas BelajarSpring sebagai kelas main seperti ini :


public class BelajarSpring {

private static ApplicationContext applicationContext;

public static void main(String[] args) {

People people = new People();

//cetak

System.out.println("Nim : " + people.getNim());

System.out.println("Nama : " + people.getNama());

}

}

Lalu jalankan program diatas, apa yang tercetak? program diatas akan menghasilkan keluaran seperti ini :


Nim : null

Nama : null

Mengapa bisa null? Karena variabel yang telah kita siapkan pada kelas People, belum di inisialisasi, sehingga ketika dicetak akan menghasilkan null, pada beberapa contoh lain akan menghasilkan NullPointerException, sekarang mari kita ubah sedikit kelas BelajarSpring diatas menjadi seperti ini :


public static void main(String[] args) {

applicationContext = new ClassPathXmlApplicationContext("/com/kusandriadi/conf/spring-ctx.xml");

People people = (People) applicationContext.getBean("people");

//cetak

System.out.println("Nim : " + people.getNim());

System.out.println("Nama : " + people.getNama());

}

Lalu jalankan, dan akan mempunyai keluaran seperti ini :


Jun 23, 2010 2:40:32 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh

INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@be2358: startup date [Wed Jun 23 02:40:32 ICT 2010]; root of context hierarchy

Jun 23, 2010 2:40:32 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

INFO: Loading XML bean definitions from class path resource [com/kusandriadi/conf/spring-ctx.xml]

Jun 23, 2010 2:40:32 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons

INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1125127: defining beans [people]; root of factory hierarchy

Nim : 0811503721
Nama : Kus Andriadi

Lihat pada baris 13 dan 14, nim dan nama sudah terinisialisasi dan tercetak dengan benar, adapun value tersebut telah diinject oleh spring karena sudah kita siapkan sebelumnya pada Spring Context. Bagaimana? tidak terlalu sulit bukan? ini hanyalah contoh kecil dari Spring, manfaat kita menggunakan Spring akan lebih terasa jika kita membangun aplikasi yang agak besar dan juga sudah bisa menggabungkan dengan Hibernate atau Ibatis (baca : Framework ORM kesayangan anda,huahaha…)

Regards

3 Responses to “[Java] Mengenal Spring Framework : Dependency Injection”

  1. Kak, xml itu apa? Lalu file Spring-ctx.xml di atas berfungsi untuk apa?

    Mohon pencerahan.. hehe :D

    [Reply]

    Kus Andriadi Reply:

    Spring Ctx itu Spring context, gimana yah..susah jelasinnya :P

    [Reply]

  2. [...] yang saya berikan tidak akan terlalu jauh berbeda dari contoh sebelumnya disini, Jadi saya sarankan anda membaca terlebih dahulu artikel saya tersebut agar anda mempunyai sedikit [...]

Leave a Reply

CommentLuv Enabled

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word

Get Adobe Flash playerPlugin by wpburn.com wordpress themes