Пользовательский конвертер Spring boot 2.0 игнорируется - PullRequest
0 голосов
/ 02 июля 2018

У меня либо совершенно неправильно понятые конвертеры, либо все найденные примеры / блоги / документы предполагают, что я сделал шаг ... Насколько я понимаю, когда я публикую 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());
    }

}

Вызывается во время запуска приложения.

Единственное, о чем я могу думать, это то, что преобразователь / контроллер не считает, что полезная нагрузка на самом деле является строкой, поэтому игнорирует ее?

Как я могу отладить это или просто заставить его работать?

Вот рабочий пример приложения , который показывает мою проблему.

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...