Внедрение свойств из application.yml на карту - PullRequest
0 голосов
/ 30 августа 2018

У меня есть 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 Ответ

0 голосов
/ 30 августа 2018

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

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

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


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

...