1. Введение
В этом руководстве мы научимся получать доступ к значениям, определённым в properties file в Spring Boot application.
Сначала мы определим, как properties конфигурируются в Spring Boot application. Затем посмотрим, как эти properties можно читать во время runtime в приложении.
Наличие properties file — самый распространённый способ вынести конфигурацию для Spring Boot application. Поэтому это хороший и удобный способ для нас настроить поведение приложения без изменения кода.
Давайте начнём.
2. Определение свойств в Spring Boot
Сначала нам нужно определить некоторые свойства. Spring использует соглашение: создавать файл с именем application.properties внутри папки resources, в котором мы записываем все конфигурации. Если мы используем формат YAML, файл называется application.yml.
Теперь предположим, что мы хотим определить rate limit для запросов пользователей. В нашем properties file мы можем определить свойство с именем userRequest.rate_limit:
userRequest.rate_limit=20
Здесь мы определили rate limit в 20 requests per minute для user’s request. Давайте посмотрим, как мы можем прочитать это property в нашем application.
3. Доступ к properties внутри Spring Service
Теперь у нас есть значение для custom property, которое мы можем прочитать. Для этой цели мы можем использовать аннотацию @Value внутри сервиса Spring boot:
@Service
public class UserRequestService {
@Value("${userRequest.rate_limit}")
private String userRequestRateLimit;
// ...
}
Вкратце, аннотация @Value используется для внедрения значения property в field в Spring.
Кроме того, мы можем использовать аннотацию @Value для внедрения свойств в constructor parameters или method parameters:
@Service
public class UserRequestService {
private final String userRequestRateLimit;
@Autowired
public UserRequestService(@Value("${userRequest.rate_limit}") String userRequestRateLimit) {
this.userRequestRateLimit = userRequestRateLimit;
}
// ...
}
4. Установка Default Values
Иногда мы можем не хотеть требовать, чтобы property обязательно задавался пользователем. В таких случаях мы хотим, чтобы property имел значение по умолчанию. Для этой цели мы можем использовать формат ${property:defaultValue}, чтобы задать значение по умолчанию:
@Value("${userRequest.rate_limit:10}")
private String userRequestRateLimit;
В этом случае нам не придётся задавать значение внутри properties file. Если property не задано, будет использовано default value 10.
5. Заключение
В этом коротком руководстве мы узнали, как получить доступ к значениям, определённым в properties file в приложении Spring Boot. Сначала мы определили custom property, затем использовали аннотацию @Value, чтобы внедрить значения property в наш Spring service. Наконец, мы посмотрели, как задавать default values для properties.


