Внедрение свойств из application.yml на карту

У меня есть application.yml с различными свойствами, как показано ниже.

   lists:
      exampleList: [1,2,3]
      exampleString: abcde
      another:
         example1: exam1
         example2: exam2

И я связываю эти свойства с компонентом Spring, используя @ConfigurationProperties

@Data
@Component
@ConfigurationProperties
public class ExampleConfig {
    private Map<String,Object> lists;
}

Я добавлю этот компонент в контроллер начальной загрузки и свяжу этот конфиг с конечной точкой get config /controller/config

Когда вызывается эта конечная точка, ожидание возврата

{
      "lists": {
         "exampleList": ["1", "2", "3"],
         "exampleString": "abcde"
         "another": {
            "example1": "exam1",
            "example2": "exam2"
         }
      }

   }

Вместо этого он возвращает ответ, как показано ниже

{
          "lists": {
             "exampleList": {
                 "0" : "1",
                 "1" : "2",
                 "2" : "3"
             }
             "exampleString": "abcde"
             "another": {
                "example1": "exam1",
                "example2": "exam2"
             }
          }

       }

Список в yml сопоставляется с объектом на карте. Как мы можем добиться правильной привязки к соответствующим типам данных?

Ценю твою помощь!

1 ответ

Существует более сложное решение. Вместо того, чтобы вводить все ваши конфиги в Map у вас может быть простой Java DTO, который представляет структуру ваших конфигураций.

Вставьте ваши конфиги в Java DTO с помощью @ConfigurationProperties и верните JavaDTO из конечной точки вашего контроллера.

См. https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html


Конечная точка исполнительного механизма пружинного башмака также имеет специальную конечную точку, называемую configprops который дает все свойства конфигурации. Однако, если вы хотите использовать это, вам, возможно, придется сделать много настроек. Для получения дополнительной информации https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html

Другие вопросы по тегам