注:这种传参方式@RequestParam注解及其value值必须要,而且其实现方法的参数名字必须和注解中的value值一样,否则就要在实现方法中也要加@RequestParam注解及其value值。
注:这种传参方式必须要在其实现方法中也要打上@RequestBody注解,否则无法接收到参数。
3.Date类型参数的时差
这是我使用第一种方式传参时出现的问题,平台传的参数是上面的,但是服务接收到的参数是下面的,这是SpringCloud Feign传Date类型参数的时差导致的。
使用第二种方式将参数封装在对象中,通过JSON传参就不会出现时差。
如果真要用第一种方式的话,有两种解决方法:
a.当发送时间类型时,直接用String发送
b.Feign客户端实现FeignFormatterRegistrar接口自定义DateFormatRegister
@Component public class DateFormatRegister implements FeignFormatterRegistrar{
public DateFormatRegister(){ } @Override public void registerFormatters(FormatterRegistry registry) { registry.addConverter(Date.class, String.class, new Date2StringConverter()); }
private class Date2StringConverter implements Converter<Date,String>{
@Override public String convert(Date source) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(source); } } }
provider增加相应的解析器
@Configuration public class WebConfigBeans { @Autowired private RequestMappingHandlerAdapter handlerAdapter;
/** * 增加字符串转日期的功能 */ @PostConstruct public void initEditableValidation() { ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) handlerAdapter .getWebBindingInitializer(); if (initializer.getConversionService() != null) { GenericConversionService genericConversionService = (GenericConversionService) initializer .getConversionService(); genericConversionService.addConverter(String.class, Date.class, new String2DateConverter()); } } }
b方法转载自 https://blog.csdn.net/u014747616/article/details/77855224本人未实际操作过,供参考