Вытащить все параметры из application.yaml файла

Всем привет!

Как многие, работающие со Spring, знают, что у него есть файлы конфигурации откуда можно вытаскивать настроечные параметры. В моём случае это application.yaml.

У меня появилась потребность в том, чтобы во время работы приложения вытаскивать из него все конфиги, которые там есть, и возвращать их куда-то там. В общем, Controller должен возвращать Map с списком всех параметров из application.yaml. Как это можно сделать?

Простое считывание YAML-файла и преобразование его в JSON или использование @ConfigurationProperties не совсем подходит, но если это единственное решение задачи, то не могли бы вы написать об этом, чтобы я хотя бы не искал других путей решения задачи.


Ответы (1 шт):

Автор решения: Roman Konoval

В springboot включите actuator.

Для этого добавьте в зависимости проекта:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>

После этого нужно только включить web endpoint (env), который показывает конфигурацию (по умолчанию он не выставляется через web). Для этого в application.yaml добавляем:

management:
  endpoints:
    web:
      exposure:
        include: "health,env"

И теперь (если сервер слушает на порту 8080) по адресу http://localhost:8080/actuator/env можно увидеть всю конфигурацию, включая то, откуда параметр пришел, т.е. из какого файла, или из командной строки или из окружения и т.д.

Перед тем как это использовать в проде обязательно прочитайте доку по actuator.

→ Ссылка