@ConstructorBinding in Spring Boot 3
@ConfigurationProperties(prefix = "mail.credentials")
public class ImmutableCredentials {
private final String authMethod;
private final String username;
private final String password;
public ImmutableCredentials(String authMethod, String username, String password) {
this.authMethod = authMethod;
this.username = username;
this.password = password;
}
public String getAuthMethod() {
return authMethod;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
Only if we have multiple constructors, we have to use it on the prefered constructor:
@ConfigurationProperties(prefix = "mail.credentials")
public class ImmutableCredentials {
private final String authMethod;
private final String username;
private final String password;
// constructor 1
@ConstructorBinding
public ImmutableCredentials(String authMethod, String username, String password) {
this.authMethod = authMethod;
this.username = username;
this.password = password;
}
// constructor 2
public ImmutableCredentials(String authMethod, String username) {
this.authMethod = authMethod;
this.username = username;
}
public String getAuthMethod() {
return authMethod;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
@ConstructorBinding was introduced in Spring Boot 2.2
Before version 2.2 one could only use setters to bind properties with Java fields. But after 2.2, this annotation was introduced to allow binding the properties via a parameterized constructor.
Sources:
Spring docs - Constructor Binding
Spring docs - ConfigurationProperties
Spring Boot 3 - Constructor Binding
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου
What may be missing, or could get better?