Anwendungseigenschaften und Profile
Lagern Sie die Konfiguration mit application.properties/yml aus, definieren Sie Profile und injizieren Sie Werte mit @Value und @ConfigurationProperties.
Anwendungseigenschaften und Profile ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.
application.properties im Vergleich zu application.yml
Spring Boot liest die Konfiguration aus src/main/resources/application.properties oder application.yml. YAML unterstützt hierarchische Konfigurationen ohne wiederholte Schlüssel; beide Formate bieten denselben Funktionsumfang.
# 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: validateWerte mit @Value injizieren
Verwenden Sie @Value("${property.key}"), um eine einzelne Property zu injizieren. Fügen Sie mit ${key:default} einen Standardwert hinzu. SpEL-Ausdrücke werden unterstützt.
@Service
public class PricingService {
@Value("${pricing.vat-rate:0.20}")
private double vatRate;
@Value("${app.name}")
private String appName;
}Typsicheres Binden mit @ConfigurationProperties
Binden Sie eine Gruppe zusammengehöriger Properties an einen mit @ConfigurationProperties annotierten Java-Record oder eine entsprechende Klasse. Validierungsannotationen werden unterstützt.
@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)Profile: Umgebungen definieren
Mit Profilen können Sie umgebungsspezifische Konfigurationen verwalten. Definieren Sie Beans oder Properties, die nur aktiv sind, wenn ein bestimmtes Profil aktiviert ist.
# 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=WARNProfile aktivieren
Aktivieren Sie ein Profil über application.properties, eine Umgebungsvariable, eine Systemeigenschaft oder Spring Boots SPRING_PROFILES_ACTIVE.
# 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 für Beans
Annotieren Sie eine @Bean oder @Component mit @Profile("prod"), damit sie nur registriert wird, wenn das passende Profil aktiv ist.
@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(); }
}Profilgruppen (Spring Boot 2.4+)
Gruppieren Sie mehrere Profile unter einem Namen. Wenn Sie die Gruppe aktivieren, werden alle aufgeführten Profile gleichzeitig aktiviert.
# application.properties:
spring.profiles.group.production=prod,metrics,cloudExterne Konfiguration mit Umgebungsvariablen
Spring Boot ordnet Umgebungsvariablen automatisch Properties zu. DB_HOST wird (durch Relaxed Binding) db.host zugeordnet. Ideal für Docker- und Kubernetes-Deployments.
# application.properties:
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASS}Priorität beim Überschreiben von Properties
Properties werden in dieser Reihenfolge angewendet: Kommandozeilenargumente > Umgebungsvariablen > profilspezifische Dateien > application.properties > Standardwerte. Quellen mit höherer Priorität überschreiben Quellen mit niedrigerer Priorität.
Sensible Properties mit Jasypt verschlüsseln
Sensible Werte wie Passwörter können mit Jasypt Spring Boot verschlüsselt werden. Speichern Sie den verschlüsselten Wert in den Properties; Jasypt entschlüsselt ihn beim Start mithilfe eines als JVM-Argument übergebenen Hauptschlüssels.
# application.properties:
spring.datasource.password=ENC(k9r/2dfhXPQz+2jR8yzUYw==)
# JVM arg:
java -Djasypt.encryptor.password=masterSecret -jar app.jarYAML-Dateien mit mehreren Dokumenten
YAML-Dateien unterstützen mehrere Dokumente, die durch --- getrennt werden. Verwenden Sie spring.config.activate.on-profile innerhalb jedes Dokuments für eine inline definierte profilspezifische Konfiguration.
server:
port: 8080
---
spring:
config:
activate:
on-profile: prod
server:
port: 443Schnelltest
Welche Annotation bindet eine Gruppe zusammengehöriger Properties typsicher an eine Java-Klasse?
Zusammenfassung
Verwenden Sie application.properties / application.yml für die Konfiguration. @Value eignet sich für einzelne Werte, @ConfigurationProperties für Gruppen. Mit Profilen lassen sich Umgebungen trennen. Umgebungsvariablen überschreiben Properties – unverzichtbar für Container.
Häufig gestellte Fragen
Ist die Lektion „Anwendungseigenschaften und Profile“ kostenlos?
Ja — der vollständige Text von „Anwendungseigenschaften und Profile“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Anwendungseigenschaften und Profile“?
Lagern Sie die Konfiguration mit application.properties/yml aus, definieren Sie Profile und injizieren Sie Werte mit @Value und @ConfigurationProperties. Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Java Academy zu starten?
Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Anwendungseigenschaften und Profile“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?
Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Automatische Konfiguration und Spring-Boot-Starter
- Anwendungseigenschaften und Profile
- Bean-Verdrahtung: @Component, @Service, @Repository
- Konstruktor-Injektion und zirkuläre Abhängigkeiten