Spring Boot 4-mikrotjenester og REST-API'er · Lektion

Profiler til miljøer

Skift konfiguration for hvert miljø med profiler.

Lektion 2 af 413 trin

Profiler til miljøer er en gratis Spring Boot 4-mikrotjenester og REST-API'er-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Spring Boot 4-mikrotjenester og REST-API'er, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Spring Boot 4-mikrotjenester og REST-API'er-kurset indeholder 4 lektioner i alt.

Hvorfor profiler findes

Rigtige applikationer kører i flere miljøer — lokalt, udvikling, staging og produktion — og hvert miljø har brug for forskellige datakilder, logningsniveauer og funktionsskift. Profiler gør det muligt for én kodebase at indeholde mange konfigurationer og aktivere det rigtige sæt ved kørsel.

En profil er blot en navngiven etiket. Beans og egenskabsfiler kan mærkes, så de kun gælder, når den pågældende profil er aktiv.

Profilspecifikke egenskabsfiler

Boot indlæser automatisk application-{profile}.yml oven på basisfilen application.yml. Profilfilen tilsidesætter matchende nøgler, mens alt andet nedarves.

# application.yml (base, always loaded)
spring:
  jpa:
    show-sql: false

# application-dev.yml (loaded when dev active)
spring:
  jpa:
    show-sql: true
  datasource:
    url: jdbc:h2:mem:devdb

Aktivering af en profil

Sæt spring.profiles.active for at vælge, hvilke profiler der skal køre. Det kan du gøre i en fil, som en miljøvariabel eller på kommandolinjen.

# Command line
java -jar app.jar --spring.profiles.active=prod

# Environment variable
export SPRING_PROFILES_ACTIVE=prod

# Multiple profiles
java -jar app.jar --spring.profiles.active=prod,metrics

Betingede beans med @Profile

@Profile på en bean eller konfigurationsklasse får den kun registreret, når profilen er aktiv. Det er ideelt til at udskifte implementeringer mellem miljøer.

@Configuration
public class PaymentConfig {
    @Bean
    @Profile("prod")
    public PaymentGateway liveGateway() {
        return new StripeGateway();
    }

    @Bean
    @Profile("!prod")
    public PaymentGateway fakeGateway() {
        return new InMemoryGateway();
    }
}

Profiludtryk

Værdien i @Profile understøtter simpel logik: ! for NOT, & for AND og | for OR. Gruppér udtryk med parenteser.

@Profile("!prod")                // anything except prod
@Profile("prod & metrics")       // both active
@Profile("dev | test")           // either active
@Profile("prod & (eu | us)")     // grouped

Standardprofilen

Når ingen profil er aktiv, aktiverer Spring den implicitte default-profil. Du kan målrette den eksplicit med @Profile("default") for at bruge fallback-beans under almindelig lokal kørsel.

@Bean
@Profile("default")
public DataSeeder localSeeder() {
    return new SampleDataSeeder();
}

Profilgrupper

En profilgruppe samler flere profiler under ét navn, så aktivering af gruppen aktiverer dem alle. Det er praktisk til at sammensætte tværgående hensyn.

spring:
  profiles:
    group:
      production:
        - prod
        - metrics
        - swagger-off
# Now: --spring.profiles.active=production turns on all three

Inkludering af profiler

spring.profiles.active angiver de primære profiler, mens spring.profiles.include ubetinget tilføjer flere, uanset hvilken primær profil der er valgt.

spring:
  profiles:
    include:
      - common-logging
      - audit

Inspektion af aktive profiler under kørsel

Du kan læse aktive profiler fra Environment-beanen. Det er nyttigt til kontrologik eller til logning af, hvilken konfiguration der er aktiv.

@Component
public class StartupLogger {
    private final Environment env;
    public StartupLogger(Environment env) { this.env = env; }

    @PostConstruct
    void log() {
        System.out.println("Active: "
            + String.join(",", env.getActiveProfiles()));
    }
}

Profiler i tests

I integrationstests kan du annotere klassen med @ActiveProfiles for at gennemtvinge en bestemt konfiguration, f.eks. en profil med en database i hukommelsen.

@SpringBootTest
@ActiveProfiles("test")
class OrderServiceTest {
    // loads application-test.yml + @Profile("test") beans
}

Almindelige faldgruber

Vær opmærksom på disse fejl:

  • At glemme at angive spring.profiles.active i produktion, så standarder fra udviklingsmiljøet slipper igennem
  • At placere hemmeligheder i application-dev.yml og committe filen
  • At overbruge @Profile, hvor en simpel egenskabskontakt ville være tilstrækkelig

Hurtigt tjek

Test din forståelse af profiludtryk.

Opsummering

Profiler tilpasser én kodebase til mange miljøer.

  • application-{profile}.yml tilsidesætter basiskonfigurationen
  • Aktivér via spring.profiles.active (fil, miljøvariabel eller CLI)
  • @Profile registrerer beans betinget med udtrykkene !, & og |
  • Profilgrupper samler relaterede profiler
  • Brug @ActiveProfiles i tests
Gratis at komme i gang

Lær Java med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
24
Lektioner
93

Ofte stillede spørgsmål

Er lektionen “Profiler til miljøer” gratis?

Ja — hele teksten til “Profiler til miljøer” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Spring Boot 4-mikrotjenester og REST-API'er-kurset, skal du opgradere til CoddyKit PRO. Spring Boot 4-mikrotjenester og REST-API'er-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Profiler til miljøer”?

Skift konfiguration for hvert miljø med profiler. Du øver dig i Spring Boot 4-mikrotjenester og REST-API'er med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Spring Boot 4-mikrotjenester og REST-API'er?

Der kræves ingen tidligere erfaring. Spring Boot 4-mikrotjenester og REST-API'er på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Profiler til miljøer”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Spring Boot 4-mikrotjenester og REST-API'er-lektion?

Ja. Alle Spring Boot 4-mikrotjenester og REST-API'er-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. application.properties og YAML
  2. Profiler til miljøer
  3. Typesikker konfiguration med @ConfigurationProperties
  4. Ekstern og tilsidesættelig konfiguration
← Tilbage til Spring Boot 4-mikrotjenester og REST-API'er