#spring #spring-boot #configuration #jackson #application.properties
#весна #весна-загрузка #конфигурация #джексон #application.properties
Вопрос:
В @ConfigurationProperties
компоненте я мог бы сопоставить customers
свойство application.yml
приведенного ниже файла с List<Customer>
, но вместо этого я хотел бы сопоставить его с Джексоном JsonNode
. Возможно ли это? Если да, то как?
shop:
name: "Sam's Bikes"
customers:
- name: Lucy
age: 26
- name: James
age: 24
Это то, чего я хотел бы достичь:
@ConfigurationProperties("shop")
public class ShopProperties() {
private String name;
private JsonNode customers;
}
Комментарии:
1. Я не уверен, как вы хотите отобразить в JsonNode? можете ли вы сказать нам, каков ваш ожидаемый результат? похоже, вы ищете какое-то требование и ответ
2. @Deadpool Я добавил то, чего я пытаюсь достичь. Просто интересно, есть ли аккуратный способ сделать это весной, о котором я не знаю.
3. почему именно
JsonNode
или почемуMap<String,String>
?4. В моем примере
customers
это массив. Но также возможно, что это может быть карта или даже просто строка. Поэтому мне нужно привязать его к объекту, который может вместить все эти случаи, напримерJsonNode
.
Ответ №1:
Поскольку customers
application.yml
они находятся в формате массива объектов, я бы рекомендовал либо собрать их в List<Customer>
, либо List<Map<String,Object>>
использовать приведенный ниже код, @Data — это аннотация lombok, если вы не используете lombok, добавьте геттеры и сеттеры
@ConfigurationProperties("shop")
@Data
@Configuration
public class TestConfig {
private String name;
private List<Map<String,Object>> customers; //[{name=Lucy, age=26}, {name=James, age=24}]
}