Я создаю собственный класс десериализатора, который необходимо прочитать в некоторых настраиваемых конфигурациях в моем приложении Spring Boot. Мой класс выглядит примерно так:
@Configuration
public class ItemDeserializer extends StdDeserializer<Item> {
@Value("${config.name}")
private String nameConfig;
public ItemDeserializer() {
this(null);
}
public ItemDeserializer(Class<?> vc) {
super(vc);
}
@Override
public Item deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
JsonNode node = jp.getCodec().readTree(jp);
//read in item name based on configuration value
String itemName = node.get(nameConfig).asText();
return new Item(itemName);
}
}
, и я вызываю его в классе Item следующим образом:
@JsonDeserialize(using = ItemDeserializer.class)
public class Item {
private String itemName;
//getters and setters
}
Поле nameConfig
никогда не устанавливается с соответствующим значением конфигурации . Добавление @Configuration работает в других частях моего приложения, но эти классы включают аннотации @Bean и другие вещи, которые, как я подозреваю, необходимы. Как я могу аннотировать этот класс, чтобы эта работа работала?