Properti Aplikasi dan Profil
Pisahkan konfigurasi dari kode menggunakan application.properties/yml, tentukan profil, dan masukkan nilai dengan @Value serta @ConfigurationProperties.
Properti Aplikasi dan Profil adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.
application.properties dibandingkan dengan application.yml
Spring Boot membaca konfigurasi dari src/main/resources/application.properties atau application.yml. YAML mendukung konfigurasi hierarkis tanpa mengulang kunci; keduanya memiliki fitur yang setara.
# application.properties:
server.port=8080
spring.datasource.url=jdbc:postgresql://localhost/mydb
spring.jpa.hibernate.ddl-auto=validate
# Equivalent application.yml:
server:
port: 8080
spring:
datasource:
url: jdbc:postgresql://localhost/mydb
jpa:
hibernate:
ddl-auto: validateMenyuntikkan Nilai dengan @Value
Gunakan @Value("${property.key}") untuk menyuntikkan satu properti. Tambahkan nilai bawaan dengan ${key:default}. Ekspresi SpEL juga didukung.
@Service
public class PricingService {
@Value("${pricing.vat-rate:0.20}")
private double vatRate;
@Value("${app.name}")
private String appName;
}@ConfigurationProperties untuk Pengikatan Bertipe Aman
Ikat sekelompok properti yang saling terkait ke record atau kelas Java yang dianotasi dengan @ConfigurationProperties. Anotasi validasi juga didukung.
@ConfigurationProperties(prefix = "app.mail")
public record MailProperties(
@NotBlank String host,
@Min(1) @Max(65535) int port,
boolean ssl
) {}
// Bind in Spring Boot 3: @EnableConfigurationProperties(MailProperties.class)Profil: Mendefinisikan Lingkungan
Profil memungkinkan Anda memiliki konfigurasi khusus lingkungan. Definisikan bean atau properti yang hanya aktif ketika profil tertentu sedang aktif.
# application-dev.properties (active when profile=dev):
spring.datasource.url=jdbc:h2:mem:testdb
logging.level.com.example=DEBUG
# application-prod.properties (active when profile=prod):
spring.datasource.url=jdbc:postgresql://prod-db/app
logging.level.com.example=WARNMengaktifkan Profil
Aktifkan profil melalui application.properties, variabel lingkungan, properti sistem, atau SPRING_PROFILES_ACTIVE milik Spring Boot.
# application.properties:
spring.profiles.active=dev
# Or environment variable:
export SPRING_PROFILES_ACTIVE=prod
# Or JVM argument:
java -Dspring.profiles.active=prod -jar app.jar@Profile pada Bean
Anotasikan @Bean atau @Component dengan @Profile("prod") agar komponen tersebut hanya didaftarkan ketika profil yang sesuai sedang aktif.
@Configuration
public class DataSourceConfig {
@Bean @Profile("dev")
public DataSource h2DataSource() { return new EmbeddedDatabaseBuilder().build(); }
@Bean @Profile("prod")
public DataSource postgresDataSource() { return DataSourceBuilder.create().url(prodUrl).build(); }
}Grup Profil (Spring Boot 2.4+)
Kelompokkan beberapa profil di bawah satu nama. Mengaktifkan grup akan mengaktifkan semua profil yang tercantum secara bersamaan.
# application.properties:
spring.profiles.group.production=prod,metrics,cloudKonfigurasi Eksternal dengan Variabel Lingkungan
Spring Boot secara otomatis memetakan variabel lingkungan ke properti. DB_HOST dipetakan ke db.host (pengikatan longgar). Ideal untuk penerapan Docker dan Kubernetes.
# application.properties:
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASS}Prioritas Pengesampingan Properti
Properti diterapkan berdasarkan urutan prioritas: argumen baris perintah > variabel lingkungan > berkas khusus profil > application.properties > nilai bawaan. Sumber berprioritas lebih tinggi mengesampingkan sumber berprioritas lebih rendah.
Mengenkripsi Properti Sensitif dengan Jasypt
Nilai sensitif seperti kata sandi dapat dienkripsi dengan Jasypt Spring Boot. Simpan nilai terenkripsi di properti; Jasypt mendekripsinya saat dimulai menggunakan kunci utama yang diteruskan sebagai argumen JVM.
# application.properties:
spring.datasource.password=ENC(k9r/2dfhXPQz+2jR8yzUYw==)
# JVM arg:
java -Djasypt.encryptor.password=masterSecret -jar app.jarBerkas YAML Multi-Dokumen
Berkas YAML mendukung beberapa dokumen yang dipisahkan oleh ---. Gunakan spring.config.activate.on-profile dalam setiap dokumen untuk konfigurasi khusus profil sebaris.
server:
port: 8080
---
spring:
config:
activate:
on-profile: prod
server:
port: 443Pemeriksaan Singkat
Anotasi mana yang mengikat sekelompok properti terkait ke kelas Java dengan keamanan tipe?
Ringkasan
Gunakan application.properties / application.yml untuk konfigurasi. @Value untuk nilai tunggal; @ConfigurationProperties untuk kelompok. Profil memisahkan lingkungan. Variabel lingkungan mengesampingkan properti — penting untuk kontainer.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Properti Aplikasi dan Profil” gratis?
Ya — teks lengkap “Properti Aplikasi dan Profil” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Properti Aplikasi dan Profil”?
Pisahkan konfigurasi dari kode menggunakan application.properties/yml, tentukan profil, dan masukkan nilai dengan @Value serta @ConfigurationProperties. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Java Academy?
Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Properti Aplikasi dan Profil” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Konfigurasi Otomatis dan Starter Spring Boot
- Properti Aplikasi dan Profil
- Penyambungan Bean: @Component, @Service, @Repository
- Injeksi Konstruktor dan Dependensi Sirkular