Typeveilige configuratie met @ConfigurationProperties
Koppel properties aan getypeerde configuratieklassen.
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: 3De 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
prefixaan een klasse of record - Registreer via
@ConfigurationPropertiesScanof@EnableConfigurationProperties - Records maken onveranderlijke binding via de constructor mogelijk
- Geneste typen, lijsten en kaarten worden op natuurlijke wijze gekoppeld
- Met
@Validatedbreekt ongeldige configuratie meteen af bij het opstarten
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
- application.properties en YAML
- Profielen voor omgevingen
- Typeveilige configuratie met @ConfigurationProperties
- Externe en overschrijfbare configuratie