SpringBoot 3.3.6 @ConfigurationProperties вводит нулевой объект в конструкторJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 SpringBoot 3.3.6 @ConfigurationProperties вводит нулевой объект в конструктор

Сообщение Anonymous »

Я обновляю проект весенней загрузки с 2.7.x до 3.3.6.
Сталкиваюсь с проблемой при тестировании с использованием ApplicationContextRunner, где компонент внедряется в конструктор @ Экземпляр ConfigurationProperties имеет значение null. Объект, внедренный в метод @Bean, не является нулевым.
Приведенный ниже тест проходит на 2.7.x, но не проходит на 3.3.6. Похоже, что в версии 3.x произошли изменения в способе загрузки @ConfigurationProperties. При загрузке как часть полного приложения (вместо тестового ApplicationContextRunner/TrivialConfiguration) в оболочку вводится ненулевое значение KafkaProperties.
Может ли кто-нибудь подсказать, какие изменения мне нужно внести? Я не вижу ничего непосредственно связанного с руководствами по миграции.
@Getter
@ConfigurationProperties(prefix = "spring.kafka")
public class KafkaPropertiesWrapper {
private final KafkaProperties kafkaProperties;

public KafkaPropertiesWrapper(KafkaProperties kafkaProperties) {
this.kafkaProperties = kafkaProperties;
}
}

@Getter
public class AnotherWrapper {
private final KafkaProperties kafkaProperties;

public AnotherWrapper(KafkaProperties kafkaProperties) {
this.kafkaProperties = kafkaProperties;
}
}

class KafkaWrapperTest {
@EnableConfigurationProperties({KafkaPropertiesWrapper.class, KafkaProperties.class})
private static class TrivialConfiguration {
@Bean
AnotherWrapper anotherWrapper(KafkaProperties kafkaProperties) {
return new AnotherWrapper(kafkaProperties);
}
}

private ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withUserConfiguration(TrivialConfiguration.class);

@Test
void startsOk() {
contextRunner
.run(context -> {
assertThat(context).hasSingleBean(KafkaProperties.class);
assertThat(context).hasSingleBean(KafkaPropertiesWrapper.class);
KafkaPropertiesWrapper kafkaPropertiesWrapper = context.getBean(KafkaPropertiesWrapper.class);
assertThat(kafkaPropertiesWrapper.getKafkaProperties()).isNotNull();
}
);
}
}


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

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

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

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

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

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