Как я могу использовать необязательные значения в свойствах конфигурации весенней загрузки?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как я могу использовать необязательные значения в свойствах конфигурации весенней загрузки?

Сообщение Anonymous »

Используя Spring-Boot v3.2.5, я получил конфигурацию, которая десериализуется в этот класс:

Код: Выделить всё

@Getter
// Intentionally Validated and not jakarata.validation.Valid because Valid does not trigger
// validation for configuration properties, and I don't know why.
@Validated
@ConfigurationProperties(prefix = "pfx")
public class TenantsConfiguration {

@NotNull private final Map tenants;

@ConstructorBinding
public TenantsConfiguration(Map tenants) {
this.tenants = tenants;
}

@Getter
public static class TenantConfiguration {
@NotNull private final Optional field1;
@NotNull private final Optional field2;

@ConstructorBinding
public TenantConfiguration(
Optional field1, Optional field2) {
this.field1 = field1;
this.field2 = field2;
}
}
}
И вот такая конфигурация:

Код: Выделить всё

pfx:
tenants:
t1:
field1: abc
Приложение не запускается, поскольку поле field2 имеет значение null вместо необязательного.empty():

Код: Выделить всё

Binding to target TenantsConfiguration failed:

Property: pfx.tenants.t1.field2
Value: "null"
Reason: field2 must not be null
Во время десериализации из запросов API Spring отлично обрабатывает значение null -> Необязательное преобразование. Я попробовал преобразовать TenantConfiguration в запись, но это ничего не изменило. Как мне получить обычное преобразование null -> Необязательное при загрузке конфигурации в Spring-Boot?

Подробнее здесь: https://stackoverflow.com/questions/792 ... properties
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»