У меня либо совершенно неправильно понятые конвертеры, либо все найденные примеры / блоги / документы предполагают, что я сделал шаг ... Насколько я понимаю, когда я публикую String
, конвертер поднимет его и даст Controller
POJO вместо этого.
У меня проблема в том, что конвертер никогда не вызывается.
Полезная нагрузка, поступающая в контроллер, представляет собой стандартную строку JSON API
{
"data":{
"attributes":{
"created-date":null,
},
"type":"steaks"
}
}
Конвертер:
@Slf4j
@Configuration
public class SteakConverter implements Converter<String, Steak> {
@Override
public Steak convert(String value) {
log.info("converter value {}", value);
return new Steak.builder().build();
}
}
Контроллер:
@Slf4j
@CrossOrigin
@RestController
public class SteakController {
@PostMapping("/steaks")
public ResponseEntity<String> create(@RequestBody Steak steak) {
}
}
Из прочтения всех блогов и документов я могу найти, что это все, что нужно. Однако я также попытался вручную зарегистрироваться со следующим:
@Slf4j
@EnableWebMvc
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
log.info("Converter registered");
registry.addConverter(new SteakConverter());
}
}
Вызывается во время запуска приложения.
Единственное, о чем я могу думать, это то, что преобразователь / контроллер не считает, что полезная нагрузка на самом деле является строкой, поэтому игнорирует ее?
Как я могу отладить это или просто заставить его работать?
Вот рабочий пример приложения , который показывает мою проблему.
Приветствия