Membuat Program Pertama dengan Spring Framework (Bagian -2)
Dalam artikel sebelumnya, telah ditunjukan bagaimana membuat project sederhana dan memasukan dependensi Spring Framework. Kali ini akan dibahas bagaimana membuat implementasi dari Dependency Injection menggunakan Spring Framework.
Baca Juga :
Misalnya, dibuat sebuah Class
bernama Employee
yang terdiri dari beberapa property sebagai berikut
id
fullName
address
public class Employee { private String id; private String fullName; private String address; // getter setter dihilangkan }
Class kedua adalah class Company
, yang terdiri dari property employee
sebagai berikut
public class Company { private Employee employee; public Company(Employee employee) { super(); this.employee = employee; } //getter setter dihilangkan }
Untuk membuat object baru, dari class Employee
, cara pertama yang biasa dilakukan adalah dengan langsung membuat instance, menggunakan keyword new
pada App.java
. Berikutnya programmer tinggal membuat object company dengan menjadikan employee sebagai argumen constructor.
package com.subrutin.halospring; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App { public static void main( String[] args ) { Employee employee = new Employee(); employee.setId("1"); employee.setFullName("Tedy Tri Saputro"); employee.setAddress("Jalan Kusuma Bangsa"); Company company = new Company(employee); System.out.println("Object employee yang dicreate by code :"+ employee.toString()); System.out.println("Object company yang dicreate by code :"+ company.toString()); } }
Tidak ada yang salah dari program tersebut. Object employee
dibuat, lalu masing – masing property diset langsung by code. baru kemudian object company
dibuat dengan dependensi terhadap object employee
.
Yang menjadi masalah adalah object company
tersebut memiliki dependensi terhadap object employee
secara eksplisit, atau disebut sebagai tight coupling. Dalam paradigma pemrograman, tight coupling adalah sebuah technical debt, karena programmer tidak dapat mengetes object company
secara terpisah tanpa melibatkan employee
Cara yang lain, adalah menggunakan Spring Framework, dimana object (kemudian disebut sebagai bean) akan dikelola daur hidupnya oleh Spring Container. Yang perlu dilakukan hanyalah menuliskan konfigurasi object yang akan dibentuk pada applicationContext.xml
yang telah dibuat pada tutorial sebelumnya.
<?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" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-4.3.xsd"> <bean name="employee" class="com.subrutin.halospring.Employee"> <property name="id" value="2"></property> <property name="fullName" value="Silvie"></property> <property name="address" value="Jalan Merdeka"></property> </bean> <bean name="company" class="com.subrutin.halospring.Company"> <constructor-arg ref="employee"></constructor-arg> </bean> </beans>
Pada program App.java
, programmer tinggal membaca ApplicationContext.xml
menggunakan method ClassPathXmlApplicationContext
lalu tinggal memanggil name atau id dari bean yang didefinisikan sebelumnya
//with spring ApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml"); Employee employeeBean = (Employee) appCtx.getBean("employee"); Company companyBean = (Company) appCtx.getBean("company"); System.out.println("Object employee yang dicreate by Spring :"+ employeeBean.toString()); System.out.println("Object company yang dicreate by Spring :"+ companyBean.toString());
Jika program berhasil dijalankan, output console yang dihasilkan akan sebagai berikut
ApplicationContext
pada baris 20 adalah nama interface yang memuat implementasi dari Spring Container dan merupakan jantung dari Spring IoC. Pada bagian ini, Container tersebut membaca konfigurasi bean yang telah didefinisikan pada applicationContext.xml
Sekilas memang inisiasi Object menggunakan Spring Framework lebih panjang dibandingkan membuat object dengan cara konvensional. Ya memang benar, untuk program kecil, Spring Framework akan cukup merepotkan, namun akan sangat memudahkan kerja Programmer dalam membangun aplikasi skala medium hingga besar di dunia Industri. Seiring dengan waktu, programmer akan mendapatkan feel bagaimana Spring Framework akan memudahkan seseorang dalam membangun sebuah aplikasi perangkat lunak berstandar industri
[…] Tutorial Spring Framework – 3 : Membuat Program Pertama (Bagian -2) […]