Java Academy · Lektion

Applikationsegenskaper och profiler

Externisera konfiguration med application.properties/yml, definiera profiler och injicera värden med @Value och @ConfigurationProperties.

Lektion 2 av 413 steg

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: validate

Infoga 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=WARN

Aktivera 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,cloud

Extern 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.jar

YAML-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: 443

Snabbkontroll

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.

Gratis att börja

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

  1. Automatisk konfiguration och Spring Boot-starters
  2. Applikationsegenskaper och profiler
  3. Bean-koppling: @Component, @Service, @Repository
  4. Konstruktorinjektion och cirkulära beroenden
← Tillbaka till Java Academy