Ограничения переменной POJO + при объявлении из файлов свойств (с Lombok & Spring) - PullRequest
0 голосов
/ 16 октября 2018

В проекте Java + Spring у нас есть файл свойств, и я хотел бы добавить туда некоторые ограничения для ограничения длины текста (ограничение ввода для хранения в String) в POJO, контейнере входящих данных;для чего я использую javax.validation.constraints.

Базовая версия без использования файла свойств для этого:

...
import lombok.Data;
import javax.validation.constraints.Size;
...
@Data
@NoArgsConstructor
public class DummyPojo {
  @Size(min = 15, max = 100)
  private String description;
  ...
  public DummyPojo(...){...}
  ...
}

Из-за этого будет применяться несколько POJO с одинаковыми ограничениями, цельхранить в одной уникальной точке минимальное значение размера и максимальное значение размера, как я думал в файле свойств.Хотя я делал что-то вроде этого:

...
import lombok.Data;
import javax.validation.constraints.Size;
...
@Data
@NoArgsConstructor
public class DummyPojo {
  @Getter(AccessLevel.NONE)
  @Setter(AccessLevel.NONE)
  @Autowired
  private DataConstraintsProperties properties;
    @Size(min = properties.getMinTextSize, max = properties.getMaxTextSize)
    private String description;
      ...
    public DummyPojo(...){...}
      ...
}

Но это не сработало бы, очевидно, действительно, для @Autowired потребовалось бы что-то еще, например, @Component или @Service Bean, а не @Data POJO.

Знаете ли вы, можно ли таким же образом сделать POJO способным загружать эти значения файла свойств во время объявления (хотя, боюсь, это невозможно) , илиесли мне следует использовать какой-то другой метод (считающийся элегантным с точки зрения SW Engineering или, по крайней мере, не рассматриваемый как анти-шаблон , такой как класс констант )?

СпасибоС наилучшими пожеланиями

1 Ответ

0 голосов
/ 16 октября 2018

добавьте свойство min и max в файл свойств, как показано ниже

min=8

max=19

и получите его в своем классе pojo

@Value("${min}")
private String gMin;

@Value("${max}")
private String gMax;

и используйте эту переменную, как показано ниже code

@Size(min = gMin, max = gMax)
private String description;
...