Applikationsegenskaper och profiler
Externisera konfiguration med application.properties/yml, definiera profiler och injicera värden med @Value och @ConfigurationProperties.
Applikationsegenskaper och profiler är en gratis lektion i Java Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Java Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Java Academy innehåller totalt 4 lektioner.
application.properties jämfört med application.yml
Spring Boot läser konfiguration från src/main/resources/application.properties eller application.yml. YAML stöder hierarkisk konfiguration utan upprepning av nycklar; båda formaten har samma funktioner.
# 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: validateInfoga värden med @Value
Använd @Value("${property.key}") för att infoga en enskild egenskap. Lägg till ett standardvärde med ${key:default}. SpEL-uttryck stöds.
@Service
public class PricingService {
@Value("${pricing.vat-rate:0.20}")
private double vatRate;
@Value("${app.name}")
private String appName;
}@ConfigurationProperties för typsäker bindning
Knyt en grupp relaterade egenskaper till en Java-record eller klass som är annoterad med @ConfigurationProperties. Valideringsannoteringar stöds.
@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)Profiler: definiera miljöer
Med profiler kan du ha miljöspecifika konfigurationer. Definiera beans eller egenskaper som endast är aktiva när en viss profil är aktiv.
# 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=WARNAktivera profiler
Aktivera en profil via application.properties, en miljövariabel, en systemegenskap eller 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 på beans
Annotera en @Bean eller @Component med @Profile("prod") för att registrera den endast när den matchande profilen är aktiv.
@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(); }
}Profilgrupper (Spring Boot 2.4+)
Gruppera flera profiler under ett namn. När gruppen aktiveras blir alla angivna profiler aktiva samtidigt.
# application.properties:
spring.profiles.group.production=prod,metrics,cloudExtern konfiguration med miljövariabler
Spring Boot mappar automatiskt miljövariabler till properties. DB_HOST mappas till db.host (flexibel bindning). Idealiskt för Docker- och Kubernetes-distributioner.
# application.properties:
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASS}Prioritetsordning för överskrivning av properties
Properties tillämpas i prioritetsordning: kommandoradsargument > miljövariabler > profilspecifika filer > application.properties > standardvärden. Källor med högre prioritet skriver över källor med lägre prioritet.
Kryptera känsliga properties med Jasypt
Känsliga värden, till exempel lösenord, kan krypteras med Jasypt Spring Boot. Lagra det krypterade värdet i properties; Jasypt dekrypterar det vid uppstart med hjälp av en huvudnyckel som skickas som ett JVM-argument.
# application.properties:
spring.datasource.password=ENC(k9r/2dfhXPQz+2jR8yzUYw==)
# JVM arg:
java -Djasypt.encryptor.password=masterSecret -jar app.jarYAML-filer med flera dokument
YAML-filer stöder flera dokument som avgränsas med ---. Använd spring.config.activate.on-profile i varje dokument för profilspecifik konfiguration direkt i filen.
server:
port: 8080
---
spring:
config:
activate:
on-profile: prod
server:
port: 443Snabbkontroll
Vilken annotering binder en grupp relaterade properties till en Java-klass med typsäkerhet?
Sammanfattning
Använd application.properties / application.yml för konfiguration. @Value för enskilda värden och @ConfigurationProperties för grupper. Profiler separerar miljöer. Miljövariabler skriver över properties – viktigt för containrar.
Lär dig Java med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 104
- Lektioner
- 374
Vanliga frågor
Är lektionen ”Applikationsegenskaper och profiler” gratis?
Ja – hela texten till ”Applikationsegenskaper och profiler” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Java Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Java Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Applikationsegenskaper och profiler”?
Externisera konfiguration med application.properties/yml, definiera profiler och injicera värden med @Value och @ConfigurationProperties. Ni övar på Java Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Java Academy?
Du behöver inga förkunskaper. Utbildningen i Java Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Applikationsegenskaper och profiler”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Java Academy-lektionen?
Ja. Varje Java Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Automatisk konfiguration och Spring Boot-starters
- Applikationsegenskaper och profiler
- Bean-koppling: @Component, @Service, @Repository
- Konstruktorinjektion och cirkulära beroenden