Spring Boot 2.0自定义转换器被忽略

时间:2018-07-02 00:08:57

标签: spring spring-mvc spring-boot

我已经完全错过了转换器,或者发现的所有示例/博客/文档都假设我已经完成了一步……我的理解是,当我发布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());
    }

}

这在应用程序启动期间被调用。

我唯一能想到的是,转换器/控制器不认为有效负载实际上是字符串,因此忽略它了吗?

我该如何调试它,或者使其工作?

这是显示我的问题的working sample application

欢呼

0 个答案:

没有答案