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 .