Перейти к основному содержимому

Получить значения, определенные в properties file в Spring

Profile picture
Автор
Harpal Singh
Software Engineer
Profile picture
Автор
Namastecode
Оглавление

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.

Related

Настройка порта для приложения Spring Boot
Узнаем, как настроить server port для Spring Boot application. Мы можем задать порт в файле application.properties, через command-line arguments или через system properties.
Возврат HTTP 4XX ошибок в Spring-приложении
Давайте разберём, как возвращать ошибки HTTP 4XX в приложениях Spring. Используйте ResponseEntity, чтобы задать соответствующий HTTP status code и response body.
Настройка Java Web Client для HTTPS Requests
Давайте разберёмся, как настроить Java Web Client для HTTPS-запросов. Защитим наше HTTP-общение шифрованием, чтобы сохранить данные пользователей в безопасности.