Ответ 1
@Component
public class SomeClass {
@Value("#{environment.SOME_KEY_PROPERTY}")
private String key;
....
}
Используя конструкцию, такую как
@Component
public class SomeClass {
@Inject
private Environment env;
private String key;
@PostConstruct
private void init() {
key = env.getProperty("SOME_KEY_PROPERTY");
}
....
}
можно назначить некоторое поле с некоторым свойством.
Существует ли более короткая, более сжатая форма?
@Component
public class SomeClass {
@Value("#{environment.SOME_KEY_PROPERTY}")
private String key;
....
}
Вы должны это сделать (при условии, что у вас зарегистрирован PropertySourcesPlaceHolderConfigurer)
@Value("${SOME_KEY_PROPERTY}")
private String key;
Вам также может быть полезно указать значение по умолчанию, если переменная не определена:
@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;