Подтвердить что ты не робот

Java Spring: как использовать аннотацию `@Value` для вставки свойства` Environment`?

Используя конструкцию, такую ​​как

@Component
public class SomeClass {

    @Inject
    private Environment env;

    private String key;


    @PostConstruct
    private void init() {

        key = env.getProperty("SOME_KEY_PROPERTY");

    }

    ....
}

можно назначить некоторое поле с некоторым свойством.

Существует ли более короткая, более сжатая форма?

4b9b3361

Ответ 1

@Component
public class SomeClass {

    @Value("#{environment.SOME_KEY_PROPERTY}")
    private String key;

    ....
}

Ответ 2

Вы должны это сделать (при условии, что у вас зарегистрирован PropertySourcesPlaceHolderConfigurer)

@Value("${SOME_KEY_PROPERTY}")
private String key;

Ответ 3

Вам также может быть полезно указать значение по умолчанию, если переменная не определена:

@Value("${some_property:default_value}")
private String key;

В противном случае вы получите исключение, если some_property не определен.

default_value также может быть пустым, в этом случае он будет вести себя так, как если бы some_property был необязательным:

@Value("${some_property:}")
private String key;

(Обратите внимание на двоеточие)

Если значение по умолчанию содержит специальные символы (точка, двоеточие и т.д.), затем оберните его в SpEL следующим образом:

@Value("${some_property:#{'default_value'}}")
private String key;