Использование Spring @Value со значениями по умолчанию

Использование Spring @Value со значениями по умолчанию

1. обзор

Аннотация Spring@Value обеспечивает удобный способ вставки значений свойств в компоненты. Это также очень полезно дляprovide sensible defaults for cases where a property may not be present.

В этой статье мы сосредоточимся именно на этом - как указать значение по умолчанию для аннотации Spring@Value. Более подробное краткое руководство по@Value см. В статьеhere.

2. Строковые значения по умолчанию

Давайте посмотрим на базовый синтаксис для установки значения по умолчанию для свойстваString:

@Value("${some.key:my default value}")
private String stringWithDefaultValue;

Еслиsome.key не может быть разрешен, тогда дляstringWithDefaultValue будет установлено значение по умолчанию «my default value”.

Точно так же мы можем установитьString нулевой длины в качестве значения по умолчанию:

@Value("${some.key:})"
private String stringWithBlankDefaultValue;

3. Примитивы

Чтобы установить значение по умолчанию для примитивных типов, таких какboolean иint, мы используем буквальное значение:

@Value("${some.key:true}")
private boolean booleanWithDefaultValue;
@Value("${some.key:42}")
private int intWithDefaultValue;

Если бы мы хотели, мы могли бы использовать примитивные обертки вместо них, изменив типы наBoolean иInteger.

4. Массивы

Мы также можем вставить разделенный запятыми список значений в массив:

@Value("${some.key:one,two,three}")
private String[] stringArrayWithDefaults;

@Value("${some.key:1,2,3}")
private int[] intArrayWithDefaults;

В первом примере выше значения «one”two” и «three”» вводятся по умолчанию вstringArrayWithDefaults.

Во втором примере значения1, 2, and 3 вводятся по умолчанию вintArrayWithDefaults.

5. Использование SpEL

Мы также можем использовать Spring Expression Language (SpEL), чтобы указать выражение и значение по умолчанию.

В приведенном ниже примере мы ожидаем, чтоsome.system.key будет установлено как системное свойство, и если оно не установлено, мы хотим использовать «my default system property value” по умолчанию:

@Value("#{systemProperties['some.key'] ?: 'my default system property value'}")
private String spelWithDefaultValue;

6. Заключение

В этой быстрой статье мы рассмотрели, как установить значение по умолчанию для свойства, значение которого мы хотели бы внедрить с помощью аннотации Spring@Value.

Как обычно, все примеры кода, использованные в этой статье, можно найти вthe GitHub project.