Нет сообщения об ошибке при запуске Spring Boot для вложенных @ConfigurationProperties

#spring #spring-boot

#весна #spring-boot

Вопрос:

В моем приложении spring boot у меня есть класс для работы с файлами application.properties

 @Validated
@ConfigurationProperties(prefix = "cassandre.trading.bot.exchange")
public class ExchangeParameters
  

Этот класс имеет такие свойства, как:

 /** Exchange name. For example : coinbase, kraken, kucoin. */
@NotEmpty(message = "Exchange name required, for example : coinbase, kraken, kucoin...")
private String name;

/** API username. */
@NotEmpty(message = "API username required")
private String username;
  

Если spring boot их не находит, у меня есть правильные сообщения об ошибках, такие как :

 Property: cassandre.trading.bot.exchange.secret
Value: null
Reason: API secret required

Property: cassandre.trading.bot.exchange.name
Value: null
Reason: Exchange name required, for example : coinbase, kraken, kucoin...
  

Но в моем классе у меня также есть вложенные свойства:

 /** Modes. */
@Valid
private static Modes modes = new Modes();

/** API Calls rates. */
@Valid
private static Rates rates = new Rates();

/** Exchange API rate calls. */
@ConfigurationProperties(prefix = "cassandre.trading.bot.exchange.modes")
public static class Modes {

        /** Set it to true to use the sandbox. */
        @NotNull(message = "Sandbox parameter required, set it to true to use the sandbox")
        private Boolean sandbox;

        /** Set it to true to use the dry mode. */
        @NotNull(message = "Dry parameter required, set it to true to use the dry mode")
        private Boolean dry;
  

Если скорости отсутствуют, у меня есть правильные сообщения для ставок.

Но я вообще не устанавливаю никаких параметров, у меня есть сообщения об ошибках для всех полей, кроме вложенных свойств, таких как rates.

Есть идеи? большое спасибо

Комментарии:

1. Поскольку вы инициализируете new Rates() , spring понятия не имеет об этом, поскольку вы выполняете внедрение зависимостей, а не spring. Это может быть простой внутренний класс, используйте @Autowire для переменных, если статический не является абсолютно необходимым.

2. новые скорости устанавливают для поля значение null, и, поскольку у меня есть @NotNull, они должны быть с ошибкой no ?

3. Я нашел решение. Не используйте статическое поле и класс

Ответ №1:

Я нашел решение. Не используйте статическое поле и класс

Комментарии:

1. да .. то, что я имел в виду в своем комментарии, используйте @Autowire для переменных, если статика абсолютно не нужна