Spring Framework Tutorial 1

Tutorial berikut adalah hasil dari belajar Spring Framework pada buku Beginning Spring Framework 2
Beginning Spring Framework 2

Konsep dari spring framework adalah bagaimana membuat aplikasi dalam bentuk komponen yang dapat disusun menjadi aplikasi yang utuh. Proses ini disebut sebagai wiring. Hal ini dapat dianalogikan seperti komponen alat listrik. Komponen-komponen tersebut dapat berupa objek Java yang anda tulis atau dapat juga berupa Spring API library atau bisa juga dari third-party seperti transaction manager dari Hibernate.
Langkah pertama yang akan dilakukan adalah membuat aplikasi yang modular.

Misalkan kita akan membuat aplikasi simple untuk menjumlahkan dua buah bilangan dan menampilkan hasilnya.

Untuk membuat aplikasi tersebuat bisa menggunakan single class yang diberi nama Calculate, seperti kode berikut:

package com.arulsoft.springtutorial;

public class Calculate {

    public Calculate() {

    }

    public static void main(String[] args) {
        Calculate calc = new Calculate();
        calc.execute(args);
    }

    private void showResult(String result) {
        System.out.println(result);
    }

    private long operate(long op1, long op2) {
        return op1 + op2;
    }

    private String getOpsName() {
        return " plus ";
    }

    public void execute(String[] args) {
        long op1 = Long.parseLong(args[0]);
        long op2 = Long.parseLong(args[1]);
        showResult("The result of " + op1 + getOpsName() + op2 + " is " + operate(op1, op2) + "!");

    }
}

Misalkan kita ingin aplikasi bisa melakukan operasi perkalian, maka kita harus merubah kode diatas, dan jika menginginkan aplikasi bisa menulis hasilnya pada file maka kita juga harus mengubah kode tersebut. Hal ini jelas kurang efektif. Aplikasi ini dapat dibuat secara modular dengan memisahkan logic aplikasi dari operasi matematika dan dari tujuan pencetakan hasil, yaitu dengan menggunakan interface Java. Dua interface telah ditentukan, yang pertama yaitu Operation, yang mengenkapsulasi operasi matematika:

package com.arulsoft.springtutorial;

public interface Operation {
    long operate(long op1, long op2);
    String getOpsName();
}

Selanjutnya komponen yang melakukan operasi penjumlahan adalah class OpAdd

package com.arulsoft.springtutorial;

public class OpAdd implements Operation {

    public OpAdd() {
    }

    public String getOpsName() {
        return " plus ";
    }

    public long operate(long op1, long op2) {
        return op1 + op2;
    }
}

dan komponen lain yang melakukan operasi perkalian adalah OpMultiply:

package com.arulsoft.springtutorial;

public class OpMultiply implements Operation {

    public OpMultiply() {
    }

    public String getOpsName() {
        return " times ";
    }

    public long operate(long op1, long op2) {
        return op1 * op2;
    }
}

Pada modifikasi ini komponen-komponen tersebut dapat digunakan kembali untuk aplikasi lain.
Dengan cara yang sama, coding untuk menampilkan hasil dapat dipisahkan melalui interface ResultWriter.

package com.arulsoft.springtutorial;

public interface ResultWriter {
    void showResult(String result);
}

Salahsatu implementasi dari ResultWriter adalah ScreenWriter yang menampilkan hasil pada tampilan console

package com.arulsoft.springtutorial;
public class ScreenWriter implements ResultWriter {

    public ScreenWriter() {
    }

    public void showResult(String result) {
        System.out.println(result);
    }
}

Implementasi yang lain dari ResultWriter adalah DataFileWriter yang mencetak hasil pada file text:

package com.arulsoft.springtutorial;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;

public class DataFileWriter implements ResultWriter{

    public DataFileWriter() {
    }

    public void showResult(String result) {
        File file = new File("output.txt");

        try {
            PrintWriter fwriter = new PrintWriter(
                    new BufferedWriter(new FileWriter(file)));
            fwriter.println(result);
            fwriter.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

Untuk implementasi kode secara utuh untuk CalculateScreen (cetak hasil di layar) dapat dilihat pada kode berikut:

package com.arulsoft.springtutorial;

public class CalculateScreen {

    private Operation ops = new OpAdd();
    private ResultWriter wtr = new ScreenWriter();

    public static void main(String[] args) {
        CalculateScreen calc = new CalculateScreen();
        calc.execute(args);
    }

    public void execute(String[] args) {
        long op1 = Long.parseLong(args[0]);
        long op2 = Long.parseLong(args[1]);
        wtr.showResult("The result of " + op1 +
                ops.getOpsName() + op2 + " is " + ops.operate(op1, op2) + "!");
    }
}

Untuk cetak hasil pada file pake kode berkut:

package com.arulsoft.springtutorial;

public class CalculateMultFile {

    private Operation ops = new OpMultiply();
    private ResultWriter wtr = new DataFileWriter();

    public static void main(String[] args) {
        CalculateMultFile calc = new CalculateMultFile();
        calc.execute(args);
    }

    public void execute(String[] args) {
        long op1 = Long.parseLong(args[0]);
        long op2 = Long.parseLong(args[1]);
        wtr.showResult("The result of " + op1 +
                ops.getOpsName() + op2 + " is " + ops.operate(op1, op2) + "!");
    }
}

Bagan

Pada teknik diatas masih terdapat satu masalah yaitu kode CalculateScreen harus dimodifikasi dan dikompilasi ulang jika kita ingin mengubah operasi matematikanya atau merubah tujuan pencetakan hasil akhir nya.  Spring bisa membantu mangatasi masalah ini yang akan dijelaskan pada tutorial selanjutnya.

Iklan

Satu Tanggapan

  1. […] Spring Framework Tutorial 1 […]

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: