Episode praktik pertama: membuat project dengan Spring Initializr, memahami struktur direktori standar src/main/java dan src/main/resources, menjalankan aplikasi dengan embedded Tomcat dan jar executable, serta mengelola konfigurasi dasar di application.properties.

Semua teori di dua episode sebelumnya sekarang akan menjadi nyata. Episode 3 adalah titik awal praktik kalian: membuat project Spring Boot pertama dari nol, memahami struktur direktori yang dihasilkan, menjalankan aplikasi dalam beberapa cara, dan membuat endpoint pertama yang benar-benar merespons.
Pastikan environment dari episode 0 sudah siap — JDK 21, Maven wrapper, dan internet untuk mengunduh dependency. Mari kita mulai!
Cara paling mudah adalah membuka https://start.spring.io, memilih build tool Maven, bahasa Java, versi Spring Boot 3.4.x, dan Java 21. Tambahkan dependency Spring Web, lalu klik Generate. File ZIP berisi project lengkap akan terunduh — ekstrak dan buka di IDE.
Untuk pengguna terminal, cara yang setara bisa dilakukan dengan curl ke endpoint starter Spring Initializr. Kita sudah mencobanya di episode 0:
curl https://start.spring.io/starter.tgz \
-d type=maven-project -d language=java \
-d bootVersion=3.4.1 -d javaVersion=21 \
-d groupId=com.example -d artifactId=belajar-spring-boot \
-d name=belajar-spring-boot -d packageName=com.example \
-d dependencies=web,devtools \
| tar -xzvf -
cd belajar-spring-bootProject yang dihasilkan siap dibuka di IDE favorit kalian. Semua baris perintah curl di atas bisa dijalankan berulang — hasilnya project baru dengan nama yang sama akan menimpa folder lama.
Setelah project dibuat, struktur direktori standarnya adalah:
belajar-spring-boot/
├── src/main/java/com/example/
│ └── BelajarSpringBootApplication.java
├── src/main/resources/
│ ├── application.properties
│ └── static/
├── src/test/java/com/example/
│ └── BelajarSpringBootApplicationTests.java
├── pom.xml
└── mvnwsrc/main/java: kode sumber Java — home dari kelas utama dan semua komponen.src/main/resources: file konfigurasi, template, dan resource statis.src/test/java: kode test dengan JUnit 5.pom.xml: definisi dependency dan konfigurasi build Maven.mvnw: Maven wrapper, memungkinkan build tanpa Maven terinstall global.Kelas utama BelajarSpringBootApplication berisi @SpringBootApplication dan method main — inilah titik masuk aplikasi yang sudah kita bahas di episode 2.
Jalankan aplikasi lewat Maven wrapper:
./mvnw spring-boot:runPerintah ./mvnw spring-boot:run mengunduh dependency, meng-compile kode, lalu memulai embedded Tomcat. Perhatikan log Started BelajarSpringBootApplication — saat itu aplikasi sudah melayani request di port 8080.
Untuk production, build aplikasi menjadi jar yang bisa dijalankan:
./mvnw clean package
java -jar target/belajar-spring-boot-0.0.1-SNAPSHOT.jarMaven memproduksi jar executable — jar yang berisi semua dependency dan web server embedded. Inilah keunggulan Spring Boot: satu artefak bisa dijalankan di server mana pun yang memiliki JVM, tanpa install Tomcat.
Buat file baru di src/main/java/com/example bernama HelloController.java:
package com.example;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Halo dari Spring Boot!";
}
}Annotation @RestController menandai class sebagai controller web, dan @GetMapping memetakan method ke request HTTP GET pada path /hello. Body yang dikembalikan otomatis dikonversi menjadi respons HTTP.
Mulai ulang aplikasi (atau tunggu auto-restart jika spring-boot-devtools aktif), lalu tes:
curl http://localhost:8080/helloPerintah curl http://localhost:8080/hello harus mengembalikan teks Halo dari Spring Boot!. Selamat — kalian baru saja menjalankan aplikasi web pertama dengan Spring Boot.
Pusat konfigurasi ada di src/main/resources/application.properties. Formatnya key=value. Contoh konfigurasi dasar:
server.port=8081
spring.application.name=belajar-spring-boot
logging.level.com.example=DEBUG
spring.jackson.default-property-inclusion=non_nullUbah port lalu jalankan ulang — aplikasi sekarang melayani di port 8081. Semua konfigurasi Spring Boot mengikuti pola module.area.nama-property, dan referensi lengkapnya tersedia di Spring Boot Reference Documentation.
Selain .properties, Spring Boot mendukung format YAML dengan hierarki yang lebih rapi. Contoh konfigurasi yang sama:
server:
port: 8081
spring:
application:
name: belajar-spring-boot
logging:
level:
com.example: DEBUGPilih satu format dan konsisten — kalian tidak boleh memiliki kedua file tersebut bersamaan karena Spring Boot hanya membaca satu. Perbandingan keduanya akan kita bahas lebih dalam di episode 8.
Episode 3 menutup fondasi praktik kalian: membuat project dengan Spring Initializr lewat web atau curl, memahami struktur src/main/java, src/main/resources, dan pom.xml, menjalankan aplikasi dengan embedded Tomcat melalui ./mvnw spring-boot:run atau jar executable, membuat endpoint REST pertama, dan mengelola konfigurasi dasar.
Inti yang harus dibawa pulang:
curl untuk membuatnya.@SpringBootApplication adalah titik masuk aplikasi../mvnw spring-boot:run menjalankan aplikasi dengan embedded Tomcat di port default 8080../mvnw clean package menghasilkan jar executable untuk production.@RestController dan @GetMapping membuat endpoint REST pertama kalian.application.properties atau application.yml adalah pusat konfigurasi aplikasi.Di episode 4 selanjutnya kita akan membahas dependency injection dan bean management — konsep bean, annotation @Component, @Service, @Repository, dan @Controller, constructor vs field injection, scope singleton dan prototype, serta lifecycle callbacks. Fondasi ini dipakai di hampir semua episode berikutnya.