Spring Boot 4-microservices en REST-API's · Les

Typeveilige configuratie met @ConfigurationProperties

Koppel properties aan getypeerde configuratieklassen.

Les 3 van 413 stappen

Typeveilige configuratie met @ConfigurationProperties is een gratis Spring Boot 4-microservices en REST-API's-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Spring Boot 4-microservices en REST-API's. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Spring Boot 4-microservices en REST-API's bevat in totaal 4 lessen.

Verder dan @Value

Tientallen @Value-annotaties verspreid over een functie zijn kwetsbaar en moeilijk te valideren. Met @ConfigurationProperties koppel je een hele groep gerelateerde sleutels aan één sterk getypeerd object.

Je krijgt automatisch aanvullen in de IDE, typeveiligheid, validatie en een duidelijk contract voor wat de functie uitleest.

Een prefix aan een klasse koppelen

Declareer een klasse met een prefix; Spring koppelt elke sleutel onder die prefix aan een overeenkomend veld. Dankzij ontspannen binding kan max-retries in YAML worden gekoppeld aan maxRetries in Java.

@ConfigurationProperties(prefix = "app.mail")
public class MailProperties {
    private String host;
    private int port;
    private int maxRetries;
    // getters and setters
}

De eigenschappenbean registreren

Een klasse met @ConfigurationProperties moet een bean worden. De duidelijkste manier is @EnableConfigurationProperties op een configuratieklasse, of @ConfigurationPropertiesScan op de hoofdtoepassing.

@SpringBootApplication
@ConfigurationPropertiesScan
public class Application { }

// or explicitly:
@Configuration
@EnableConfigurationProperties(MailProperties.class)
class MailConfig { }

De bijbehorende YAML

Met de prefix app.mail worden deze YAML-sleutels aan de velden gekoppeld. Dankzij ontspannen binding worden sleutels in kebab-case geaccepteerd voor velden in camelCase.

app:
  mail:
    host: smtp.example.com
    port: 587
    max-retries: 3

De eigenschappen injecteren

Injecteer het getypeerde object overal zoals elke andere bean. De functiecode leest gestructureerde configuratie in plaats van losse tekenreeksen.

@Service
public class MailService {
    private final MailProperties props;
    public MailService(MailProperties props) {
        this.props = props;
    }
    void send() {
        connect(props.getHost(), props.getPort());
    }
}

Onveranderlijke binding met records

Spring Boot ondersteunt binding via de constructor, wat perfect is voor onveranderlijke configuratie. Een Java-record werkt rechtstreeks met @ConfigurationProperties; setters zijn niet nodig.

@ConfigurationProperties(prefix = "app.mail")
public record MailProperties(
        String host,
        int port,
        int maxRetries) {
}

Standaardwaarden

Met records kun je standaardwaarden opgeven in een compacte constructor; bij klassieke klassen initialiseer je het veld. Standaardwaarden worden gebruikt wanneer de sleutel ontbreekt in de Environment.

@ConfigurationProperties(prefix = "app.mail")
public record MailProperties(String host, Integer port, Integer maxRetries) {
    public MailProperties {
        if (port == null) port = 587;
        if (maxRetries == null) maxRetries = 3;
    }
}

Geneste objecten

Configuratiebomen worden aan geneste typen gekoppeld. Een veld van een aangepast type koppelt sleutels een niveau dieper, zodat complexe configuratie overzichtelijk blijft.

@ConfigurationProperties(prefix = "app")
public class AppProperties {
    private final Security security = new Security();
    public Security getSecurity() { return security; }
    public static class Security {
        private boolean enabled;
        private String issuer;
        // getters/setters
    }
}

Lijsten en kaarten

Velden van een verzamelingstype worden automatisch gekoppeld aan YAML-reeksen en -kaarten. Dat is veel netter dan tekenreeksen met komma's handmatig parseren.

@ConfigurationProperties(prefix = "app")
public class AppProperties {
    private List<String> allowedOrigins;
    private Map<String, Integer> rateLimits;
    // getters/setters
}
// app.allowed-origins: [a, b]
// app.rate-limits: { read: 100, write: 20 }

Gekoppelde waarden valideren

Voeg @Validated toe aan de eigenschappenklasse en JSR-380-beperkingen aan de velden. Spring valideert bij het opstarten en breekt meteen af als de configuratie ongeldig is, in plaats van pas diep in productie een fout te geven.

@Validated
@ConfigurationProperties(prefix = "app.mail")
public class MailProperties {
    @NotBlank private String host;
    @Min(1) @Max(65535) private int port;
    // getters/setters
}

Metagegevens en de verwerker

Voeg spring-boot-configuration-processor toe als annotatieverwerker om metagegevens te genereren. Je IDE biedt dan automatisch aanvullen en documentatie voor je aangepaste sleutels in application.yml.

<!-- pom.xml -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>

Korte controle

Test je begrip van ontspannen binding.

Samenvatting

@ConfigurationProperties biedt typeveilige, gegroepeerde configuratie.

  • Koppel een prefix aan een klasse of record
  • Registreer via @ConfigurationPropertiesScan of @EnableConfigurationProperties
  • Records maken onveranderlijke binding via de constructor mogelijk
  • Geneste typen, lijsten en kaarten worden op natuurlijke wijze gekoppeld
  • Met @Validated breekt ongeldige configuratie meteen af bij het opstarten
Gratis beginnen

Leer Java met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
24
Lessen
93

Veelgestelde vragen

Is de les “Typeveilige configuratie met @ConfigurationProperties” gratis?

Ja — de volledige tekst van “Typeveilige configuratie met @ConfigurationProperties” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Spring Boot 4-microservices en REST-API's wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Spring Boot 4-microservices en REST-API's bevat in totaal 4 lessen.

Wat leer ik in “Typeveilige configuratie met @ConfigurationProperties”?

Koppel properties aan getypeerde configuratieklassen. Je oefent met Spring Boot 4-microservices en REST-API's door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Spring Boot 4-microservices en REST-API's te beginnen?

Ervaring vooraf is niet nodig. Spring Boot 4-microservices en REST-API's op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Typeveilige configuratie met @ConfigurationProperties”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Spring Boot 4-microservices en REST-API's?

Ja. Elke les over Spring Boot 4-microservices en REST-API's bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. application.properties en YAML
  2. Profielen voor omgevingen
  3. Typeveilige configuratie met @ConfigurationProperties
  4. Externe en overschrijfbare configuratie
← Terug naar Spring Boot 4-microservices en REST-API's