#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 для переменных, если статика абсолютно не нужна