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

Префиксы переменных среды в Spring Boot 2.5

· 3 мин. чтения

1. Обзор

В этом руководстве будет обсуждаться функция, добавленная в Spring Boot 2.5, которая позволяет указывать префикс для переменных системной среды . Таким образом, мы можем запускать несколько разных приложений Spring Boot в одной и той же среде, поскольку все свойства будут ожидать версию с префиксом.

2. Префиксы переменных среды

Нам может понадобиться запустить несколько приложений Spring Boot в одной и той же среде, и мы часто сталкиваемся с проблемой присвоения имен переменных среды различным свойствам .

Мы могли бы использовать свойства Spring Boot , которые в некотором роде могут быть похожими, но мы также можем захотеть установить префикс на уровне приложения, чтобы использовать его на стороне среды.

Давайте настроим, в качестве примера, простое приложение Spring Boot и изменим свойство приложения, например, порт сервера tomcat, установив этот префикс .

2.1. Наше приложение Spring Boot

Давайте создадим приложение Spring Boot, чтобы продемонстрировать эту функцию. Во-первых, давайте добавим к приложению префикс . Для простоты мы называем это « префиксом» :

@SpringBootApplication
public class PrefixApplication {

public static void main(String[] args) {
SpringApplication application = new SpringApplication(PrefixApplication.class);
application.setEnvironmentPrefix("prefix");
application.run(args);
}
}

Мы не можем использовать в качестве префикса слово, которое уже содержит символ подчеркивания (_). В противном случае приложение выдаст ошибку.

Мы также хотим создать конечную точку для проверки того, какой порт слушает наше приложение:

@Controller
public class PrefixController {

@Autowired
private Environment environment;

@GetMapping("/prefix")
public String getServerPortInfo(final Model model) {
model.addAttribute("serverPort", environment.getProperty("server.port"));
return "prefix";
}
}

В этом случае мы используем Thymeleaf для разрешения нашего шаблона при настройке порта нашего сервера с простым телом, например:

<html>
// ...
<body>
It is working as we expected. Your server is running at port : <b th:text="${serverPort}"></b>
</body>
</html>

2.2. Установка переменных среды

Теперь мы можем установить для нашей переменной среды, такой как prefix_server_port , например, 8085. Мы можем увидеть, как установить системные переменные среды, например, в Linux .

Как только мы установим переменную среды, мы ожидаем, что приложение создаст свойства на основе этого префикса.

В случае запуска из IDE нам нужно отредактировать конфигурацию запуска и добавить переменную среды или выбрать ее из уже загруженных переменных среды.

2.3. Запуск приложения

Теперь мы можем запустить приложение из командной строки или с помощью нашей любимой IDE.

Если мы загрузим в нашем браузере URL-адрес http://localhost:8085/prefix , мы увидим, что сервер работает и на порту, который мы указали ранее:

It is working as we expected. Your server is running at port : 8085

Приложение начнет использовать переменные среды по умолчанию, если они не имеют префикса.

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

В этом руководстве мы увидели, как использовать префикс для переменных среды с Spring Boot. Это может помочь, например, если мы хотим запустить несколько приложений Spring Boot в одной среде и присвоить разные значения свойству с одинаковым именем, например порту сервера.

Как всегда, код, представленный в этой статье, доступен на GitHub .