Episode ini membahas konfigurasi aplikasi Java: file properties, YAML, dan environment variable, penggunaan java.util.Properties dan library konfigurasi modern, penanganan konfigurasi multiple environment, serta best practice menyimpan secret dan kredensial.

Aplikasi produksi tidak boleh meng-hardcode konfigurasi seperti URL database atau API key. Episode 11 membahas konfigurasi dan environment variables — cara memisahkan pengaturan dari kode agar aplikasi fleksibel dan aman.
Kalian akan belajar file properties dan YAML, membaca environment variable, memakai java.util.Properties dan library modern seperti Spring, mengelola konfigurasi untuk multiple environment, serta best practice menyimpan secret. Kemampuan ini sangat penting saat aplikasi dipindah dari development ke produksi.
File .properties adalah format klasik Java dengan pasangan key=value:
app.name=BelajarJava
server.port=8080
db.url=jdbc:postgresql://localhost:5432/tokoGunakan java.util.Properties untuk memuat dan membaca:
import java.io.*;
import java.nio.file.*;
import java.util.Properties;
public class BacaProperties {
public static void main(String[] args) throws IOException {
Properties props = new Properties();
try (InputStream in = Files.newInputStream(Path.of("config.properties"))) {
props.load(in);
}
String nama = props.getProperty("app.name");
int port = Integer.parseInt(props.getProperty("server.port"));
System.out.println(nama + " di port " + port);
}
}props.load(in) memuat seluruh pasangan key-value, lalu getProperty mengambil nilainya.
YAML lebih mudah dibaca untuk struktur bertingkat dan menjadi standar di Spring Boot:
app:
name: BelajarJava
server:
port: 8080
db:
url: jdbc:postgresql://localhost:5432/toko
pool-size: 10YAML menggunakan indentasi untuk menunjukkan hierarki — lebih jelas untuk konfigurasi yang kompleks.
YAML bisa dibaca dengan Jackson Dataformat YAML:
mvn dependency:get -Dartifact=com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.17.2import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.nio.file.*;
public class BacaYaml {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
JsonNode node = mapper.readTree(Path.of("application.yml").toFile());
System.out.println(node.get("app").get("name").asText());
}
}Environment variable memisahkan konfigurasi dari kode sepenuhnya dan ideal untuk nilai yang sensitif atau berbeda antar environment. Tetapkan dari terminal:
export DB_URL="jdbc:postgresql://localhost:5432/toko"
export APP_PORT=8080Baca environment variable di Java:
public class BacaEnv {
public static void main(String[] args) {
String dbUrl = System.getenv("DB_URL");
String port = System.getenv().getOrDefault("APP_PORT", "8080");
System.out.println("DB: " + dbUrl + " port: " + port);
}
}System.getenv("DB_URL") mengambil nilai variabel, dan getOrDefault memberikan nilai default bila tidak ditemukan.
Library modern seperti Spring mendukung profile untuk multiple environment: dev, staging, dan prod. Buat file terpisah per environment:
application.yml -> konfigurasi umum
application-dev.yml -> konfigurasi development
application-prod.yml -> konfigurasi produksiAktifkan profil saat menjalankan aplikasi:
java -jar aplikasi.jar --spring.profiles.active=prodDengan profil, konfigurasi umum diletakkan di file utama, dan hanya yang berbeda saja yang di-override per environment.
Secret seperti password database dan API key tidak boleh masuk ke repository. Pisahkan konfigurasi publik dan rahasia. Gitignore file yang memuat secret:
echo ".env" >> .gitignore
echo "application-secret.yml" >> .gitignoreDi produksi, jangan simpan secret dalam file konfigurasi. Gunakan environment variable, secret manager seperti Vault atau AWS Secrets Manager, atau fitur secret dari platform cloud. Prinsipnya: kode sama untuk semua environment, secret datang dari luar saat runtime.
Warning
Jangan pernah menulis password, API key, atau token di source code. Gunakan environment variable atau secret manager, dan pastikan file yang memuat secret masuk ke .gitignore.
Episode 11 membahas konfigurasi aplikasi: file properties dan YAML, environment variable, java.util.Properties dan library modern seperti Spring, konfigurasi multiple environment dengan profil, serta best practice menyimpan secret dan kredensial.
Inti yang harus dibawa pulang:
key=value; YAML untuk struktur bertingkat.java.util.Properties memuat file lewat props.load().Di episode 12 selanjutnya kita akan membahas networking dasar dan HTTP client — socket programming dengan java.net.Socket dan ServerSocket, HTTP API modern dengan java.net.http.HttpClient, membuat request GET dan POST, konsumsi API REST, serta asynchronous request dengan CompletableFuture. Saatnya berbicara dengan layanan lain!