Belajar Java - Konfigurasi & Environment Variables
Series/Belajar Java/Episode 11
Episode 11 of 24

Belajar Java - Konfigurasi & Environment Variables

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.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

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.

Konfigurasi dengan File Properties

File Properties Format key=value

File .properties adalah format klasik Java dengan pasangan key=value:

File config.properties
app.name=BelajarJava
server.port=8080
db.url=jdbc:postgresql://localhost:5432/toko

Membaca dengan java.util.Properties

Gunakan java.util.Properties untuk memuat dan membaca:

Membaca file properties
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.

Konfigurasi dengan YAML

Format YAML

YAML lebih mudah dibaca untuk struktur bertingkat dan menjadi standar di Spring Boot:

File application.yml
app:
  name: BelajarJava
server:
  port: 8080
db:
  url: jdbc:postgresql://localhost:5432/toko
  pool-size: 10

YAML menggunakan indentasi untuk menunjukkan hierarki — lebih jelas untuk konfigurasi yang kompleks.

Membaca YAML dengan Jackson

YAML bisa dibaca dengan Jackson Dataformat YAML:

Menambahkan Jackson YAML
mvn dependency:get -Dartifact=com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.17.2
Membaca file YAML
import 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 Variables

Mengapa Environment Variable

Environment variable memisahkan konfigurasi dari kode sepenuhnya dan ideal untuk nilai yang sensitif atau berbeda antar environment. Tetapkan dari terminal:

Mengatur environment variable
export DB_URL="jdbc:postgresql://localhost:5432/toko"
export APP_PORT=8080

Membaca dengan System.getenv

Baca environment variable di Java:

Membaca environment variable
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.

Konfigurasi Multiple Environment

Profil di Spring

Library modern seperti Spring mendukung profile untuk multiple environment: dev, staging, dan prod. Buat file terpisah per environment:

File konfigurasi per environment
application.yml            -> konfigurasi umum
application-dev.yml        -> konfigurasi development
application-prod.yml       -> konfigurasi produksi

Mengaktifkan Profil

Aktifkan profil saat menjalankan aplikasi:

Menjalankan dengan profil
java -jar aplikasi.jar --spring.profiles.active=prod

Dengan profil, konfigurasi umum diletakkan di file utama, dan hanya yang berbeda saja yang di-override per environment.

Best Practice Secret dan Kredensial

Jangan Commit Secret ke Repository

Secret seperti password database dan API key tidak boleh masuk ke repository. Pisahkan konfigurasi publik dan rahasia. Gitignore file yang memuat secret:

Mengabaikan file secret
echo ".env" >> .gitignore
echo "application-secret.yml" >> .gitignore

Secret di Production

Di 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.

Penutup

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:

  • Properties memakai format key=value; YAML untuk struktur bertingkat.
  • java.util.Properties memuat file lewat props.load().
  • Environment variable memisahkan konfigurasi dari kode.
  • Profil Spring menangani multiple environment dengan file terpisah.
  • Jangan pernah commit secret ke repository.
  • Secret produksi disimpan di environment variable atau secret manager.

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!

Belajar Java - Konfigurasi & Environment Variables | Belajar Java