Dunia web development sekarang ini sudah sangat kaya dengan framework dan library-library baru. Sebut saja, untuk bahasa pemrograman PHP sendiri sudah banyak bertebaran framework yang memudahkan kita ngoding, misalnya Codeigniter, Laravel, Yii, dan lain-lain. Untuk Ruby ada RoR-Ruby on Rails. Python punya Django. Dan masih banyak lagi. Begitu juga Java. Bahasa ini sudah sangat modern (kalau tidak mau dikatakan tua, hehe) dan tentunya sudah sangat matang untuk development web, ditunjang dengan berbagai macam framework, salah satunya yang akan kita bahas pada artikel kali ini, yaitu Spring Boot.
Baca Juga: Fitur Authentication React Native
Pengantar
Sebelumnya, saya harap kamu sudah punya pengetahuan dasar tentang Java, biar enak ngobrolnya, ya.
Jadi, apa itu Spring Boot? Membahas Spring Boot, tidak bisa tidak kita harus bahas juga emak-nya, yaitu Spring Framework. Spring Framework adalah framework Java yang sangat handal, yang mengusung konsep Dependency Injection (DI). Secara sederhana, DI adalah pattern yang bertumpu pada penulisan kode secara clean dan loosely coupled. Bingung? Begini kira-kira:
Ketika kita membuat object dari sebuah class di Java, kita akan menuliskannya seperti ini, anggaplah kita mempunyai class Hewan dengan property id dan nama,
public class Hewan {
private String id;
private String nama;
}
Ketika kita akan membuat object dari class Hewan, kita akan menuliskannya begini:
Hewan hewan = new Hewan();
Misal, kita membutuhkan object ini di class A, B, C, D, E. Maka kita harus menuliskan kode di atas berulang-ulang, sebanyak 5 kali di tiap class yang memerlukan object itu. Ini namanya tightly coupled, class A, B, C, D dan E mempunyai ketergantungan yang sangat tinggi terhadap class Hewan. Dan apakah ini efisien? Tentu tidak. Kalau kita membuat perubahan di class Hewan, misal mengganti nama class-nya atau menambah method baru, tentu kita harus melakukan perubahan juga di tiap class yang menggunakan object dari class Hewan tersebut.
Nah, Spring Framework hadir untuk mengeliminasi hal tersebut. Dan itu diwujudkan dengan menggunakan konsep DI tadi. Kita cukup membuat class dan menandai class itu sebagai Spring Bean, maka class itu akan disimpan di dalam Bean Container dan dapat dipakai di class mana saja yang membutuhkannya tanpa harus meng-intansiasi-nya berulang kali.
Sudah ada gambaran?
Kita coba demonstrasikan dengan contoh sebelumnya, kita cukup mengubah class Hewan seperti ini:
@Component(“hewan”)
public class Hewan {
// . . . code lainnya disini
}
Di class A, misalnya, kita ingin menggunakan object dari class Hewan, maka kita cukup menuliskan:
public class A {
@Autowired
private Hewan hewan;
}
Secara otomatis Spring akan menghubungkan object hewan dengan bean dari class Hewan tersebut.
Mudah ya?
Secara lengkap, dokumentasi tentang Spring dapat dilihat disini.
Baca Juga: Membuat Aplikasi Chatting React Native
Halo, Spring Boot!
Lalu, apakah Spring Boot itu sendiri? Yap, Spring Framework sebenarnya adalah kumpulan project-project dengan fungsionalitasnya masing-masing. Misalnya ada Spring Security, Spring Rest, Spring Data, Spring Cloud, dan masih banyak lagi.
Spring Boot adalah salah satu dari project itu, yang mempermudah proses web development di Java. Kita tidak perlu capek-capek nulis file konfigurasi xml atau pusing dengan cara deploy di application server. Cukup build, run, wuzz…web sudah bisa diakses…..di localhost. :D
Memulai Project Hello World di Spring Boot
Seperti biasa, ritual awal belajar sesuatu yang baru di dunia pemrograman, kita akan buat project Hello World! Ya, cuma menampilkan tulisan “Hello World” saja. Tapi dengan Spring Boot!
Buka situs Spring Initializr. Disini kita akan meng-generate project Spring Boot pertama kita.
Isi field Group dengan nama organization atau project group kamu. Nantinya ini akan dipakai sebagai struktur package. Soal penamaan group ini baiknya mengikuti Naming Conventions ini. Boleh ditulis sesuai dengan keinginan kita, tanpa mengikuti Naming Conventions? Ya boleh-boleh saja. Tapi kalau ikut Naming Conventions kan jadi rapi aja gitu.
Field Artifact diisi dengan nama project kita.
Di bagian Dependencies sendiri, kita bisa bebas memilih dependency atau module apa yang dibutuhkan untuk aplikasi kita. Karena kita cuma pengen bikin aplikasi hello world, dependency Web sudah cukup lah.
Lalu klik Generate Project, dan itu akan otomatis men-download project kita dalam bentuk .zip. Silakan buka dengan IDE kamu. Saya pakai IDE kesayangan saya, NetBeans.
Oh ya, project yang baru di-generate itu dalam bentuk Maven Project (kita akan bahas tentang Maven di lain waktu).
Setelah di-import masuk ke dalam NetBeans, kamu akan melihat struktur project seperti ini:
Mari kita telaah satu per satu.
Source Packages adalah lokasi source code kamu. Nantinya di situ kita akan buat controller, dan lain-lain. Selain itu juga sudah disediakan satu class utama: HelloWorldApplication.java.
Test Packages adalah lokasi source untuk melakukan unit test.
Di Other Source adalah tempat file-file lain selain file Java, biasanya file HTML, CSS, Javascript atau gambar-gambar. Ada satu file penting: application.properties. File ini akan selalu dibaca oleh Spring Boot sebagai file konfigurasi default. Folder webapp/WEB-INF/ adalah tempat kita nantinya meletakkan file-file html.
Lalu ada Dependencies, yaitu lokasi semua dependency yang kita definisikan di dalam file pom.xml.
Runtime Dependencies adalah dependency yang aktif pada saat runtime.
Test Dependencies adalah dependency dalam scope testing.
Java Dependecies berisi dependency default untuk Java, yaitu JDK.
Project Files berisi file pom.xml – konfigurasi dasar untuk project Maven kita. Dan file settings.xml adalah properties Maven untuk project kita.
Selanjutnya, buka HelloWorldApplication.java. Tuliskan code di bawah ini:
package com.ichromanrd.apps.hello.helloworld;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloWorldApplication.class, args);
System.out.println("Hello world!");
}
}
Kemudian run.
Hore, Spring Boot sudah jalan dengan mulus.
Sekarang, coba buat sebuah controller dengan nama HelloController.java.
package com.ichromanrd.apps.hello.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "hello";
}
}
Sekarang kita harus membuat konfigurasi ViewResolver, biar controller bisa membaca letak file html kita. Buat file dengan nama MvcConfiguration.java di package config.
package com.ichromanrd.apps.hello.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter {
@Bean
public InternalResourceViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/");
resolver.setSuffix(".html");
return resolver;
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
Lalu coba kita buat file hello.html di folder src/main/webapp/WEB-INF
<!DOCTYPE html>
<html>
<head>
<title>Hello!</title>
</head>
<body>
<h2>Hello World!</h2>
</body>
</html>
Lalu sekarang coba re-run file HelloWorldApplication.java. Dan buka url http://localhost:8080/hello.
Yeah, Hello World!
Kesimpulan
Begitulah kira-kira perkenalan dengan Spring Boot. Bagaimana, cukup mudah bukan membuat aplikasi web Java menggunakan Spring Boot? Source code lengkapnya dapat dilihat di github. Terima kasih dan semoga bermanfaat.
Comments