Я хочу автоматически связать пружинную зависимость в преобразователь десериализации Джексона. Например,
import com.fasterxml.jackson.databind.util.StdConverter;
@Component
public class LookupConverter extends StdConverter<T, T> {
@Autowired
private Repository<T> repo;
@Override
public IsoCountry convert(T value) {
repo.findById(value.getId()).orElse(value);
}
}
Я пытался использовать: SpringBeanAutowiringSupport
например,
public LookupConverter() {
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
но получите следующее сообщение
Текущий WebApplicationContext недоступен для обработки LookupConverter: убедитесь, что этот класс создан в веб-приложении Spring. Продолжение без инъекции.
Я пытался ввести SpringHandlerInstantiator
в ObjectMapper
ала , это и , это
@Bean
public HandlerInstantiator handlerInstantiator(ApplicationContext applicationContext) {
return new SpringHandlerInstantiator(applicationContext.getAutowireCapableBeanFactory());
}
@Bean
public Jackson2ObjectMapperBuilder objectMapperBuilder(HandlerInstantiator handlerInstantiator) {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.handlerInstantiator(handlerInstantiator);
return builder;
}
Это также не работает, по-видимому, потому что SpringHandlerInstantiator
не используется и мой пользовательский Converter
не создается экземпляром весной.
Будем весьма благодарны за любые указания на то, как это можно сделать с помощью Spring Boot 2.1.0.