Konsep Dasar Externalized Configuration
Externalized Configuration dalam Spring Boot adalah mekanisme untuk memisahkan konfigurasi aplikasi dari artefak kode (JAR/WAR). Dengan pendekatan ini, Anda dapat menjalankan aplikasi yang sama di lingkungan yang berbeda (Development, Staging, Production) tanpa perlu melakukan kompilasi ulang kode sumber.
Spring Boot menggunakan urutan prioritas (precedence) yang ketat untuk memuat properti. Jika properti yang sama didefinisikan di beberapa tempat, nilai dengan prioritas tertinggi akan menimpa nilai lainnya.
Tabel Prioritas Konfigurasi (Urutan dari Tertinggi ke Terendah)
| Prioritas | Sumber Konfigurasi |
|---|---|
| 1 | Command-line arguments |
| 2 | SPRING_APPLICATION_JSON (JSON inline) |
| 3 | Environment Variables |
| 4 | Java System Properties (-D) |
| 5 | OS Environment Variables |
| 6 | File application-{profile}.properties/yml di luar JAR |
| 7 | File application.properties/yml di dalam JAR |
| 8 | @PropertySource pada class @Configuration |
| 9 | Default properties (SpringApplication.setDefaultProperties) |
Implementasi Teknis
Untuk mengakses konfigurasi, gunakan anotasi @Value atau @ConfigurationProperties. Berikut adalah contoh implementasi menggunakan @ConfigurationProperties yang lebih disarankan untuk konfigurasi kompleks.
@ConfigurationProperties(prefix = "app.server")
public class ServerProperties {
private String host;
private int port;
// Getters and Setters
}Langkah-langkah Konfigurasi Eksternal
- File Properties Eksternal: Tempatkan file
application.propertiesdi direktori yang sama dengan file JAR atau di sub-direktori/config. - Environment Variables: Gunakan format
APP_SERVER_HOSTuntuk menggantikan propertiapp.server.host. Spring Boot secara otomatis melakukan konversi format (relaxed binding). - Command Line: Jalankan aplikasi dengan perintah:
java -jar app.jar --app.server.port=8081.
Tips Troubleshooting
- Gunakan Profile: Gunakan
spring.profiles.activeuntuk memisahkan konfigurasi antar lingkungan. - Cek Debug: Jalankan aplikasi dengan flag
--debuguntuk melihat sumber mana yang memuat properti tertentu. - Keamanan: Jangan pernah menyimpan kredensial sensitif (password/API key) di dalam file properti. Gunakan Spring Cloud Vault atau environment variables yang dienkripsi.
🔍 Orang Lain Juga Mencari Ini
Spring Boot Application.properties
Spring Boot YAML Configuration
Spring Boot Profiles
Spring Boot @ConfigurationProperties
Spring Boot Environment Variables
Spring Boot External Config Precedence
Spring Boot Command Line Arguments
Spring Boot Relaxed Binding
Spring Boot @Value Annotation
Spring Boot Config Server
Spring Boot Production Configuration
Spring Boot Property Source
Spring Boot Configuration Best Practices
Spring Boot Secret Management
Spring Boot Application.yml