我试图弄清楚如何配置的ObjectMapper中的RestTem板的默认MessageConverters序列化为一个ISO 8601格式化的字符串,而不是一个数字。我想避免在我的模型中注释每一个瞬间。
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@PostMapping("/test")
public String get(@RequestBody String object) {
return object;
}
public String send(TestObject object) {
return new RestTemplateBuilder().rootUri("http://localhost:8080").defaultMessageConverters().build()
.exchange("/test", HttpMethod.POST, new HttpEntity<>(object, headers()), String.class).getBody();
}
private HttpHeaders headers() {
final HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
return httpHeaders;
}
@AllArgsConstructor
@Getter
@Setter
public static class TestObject {
private Instant test;
}
}
考虑到上面的代码,我希望这个测试能够通过
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@RunWith(SpringRunner.class)
public class InstantTest {
@Autowired
private DemoApplication client;
@Test
public void name() {
final String time = "2018-10-09T12:00:00.000Z";
final String response = client.send(new DemoApplication.TestObject(Instant.parse(time)));
assertThat(response).contains(time);
}
}
该示例使用jackson 2.9.6和Spring Boot 2.0.5。我已经试过了
我显然遗漏了一些东西,因为这感觉应该是默认行为,或者至少是易于配置的。
您可以使用Custom RestTemplateBuilder创建自己的RestTemplateBuilder并实现此功能。
例如。
@Configuration
public class Config{
@Bean
public RestTemplate restTemplate() {
RestTemplateBuilder builder = new RestTemplateBuilder();
//You can initialize your custom message converter here;
HttpMessageConverter<?> messageConverters = new MappingJackson2HttpMessageConverter();
builder.messageConverters(messageConverters);
return builder.build();
}
}
您可以使用自己的MessageConvertor将实例序列化为ISO 8601。
如需进一步阅读,请点击此链接。
我正在尝试发布我的第一个Android应用程序,以发送给一些测试人员。但是,我遇到了一个问题。当您退出应用程序,然后通过其图标启动它重新进入它时,它会重新启动整个应用程序,而不是返回到其以前的位置。即使您在退出后立即重新进入,也会发生这种情况。但是,如果我按住主屏幕按钮并通过最近的应用程序列表启动它,则不会发生这种情况。 我在网上搜索过其他有这个问题的人,只有少数人,但没有人能确切回答为什么会发生
我有一个spring启动应用程序,我需要通过进入文件夹目录并通过命令行启动我的web应用程序来启动它。我有一门课叫应用。java及其内部代码如下所示。 我设置了类路径,然后试图运行命令"",但我得到了这个错误消息""
我已经安装了以下版本,以使用硒与Chrome。chrome浏览器正在启动并打开所需的url,但立即被终止,窗口在几秒钟内关闭。请指导我需要做的任何更改。
我正试图创建一个tabata计时器。我设法从editText中获取用户输入,并启动一个计时器,它表示准备时间。 当准备时间结束后,我想开始工作时间,然后是Rest时间。稍后,当用户输入时,我需要将Worktime和Resttime重复x次。但我想不通。 MainActivity.kt: 我设法导入了图书馆。 但我现在得到以下错误: 代码: 编辑:build.gradle(module.app):
问题内容: 当前,我有一个Java Standalone Swing应用程序。 现在,当用户单击Swing应用程序中的按钮时,我想启动另一个Java应用程序(说:Calculator.jar) 我可以知道什么是便携式方法吗?这样它就可以在多个OS中工作吗? 问题答案: 使用或只是将其放在类路径中并调用其。
显示 “无法导入资源”@AcmeDemoBundle/Controller/SecuredController。php“from”D:/UserData/WWWRoot/Symfony/app/config/routing。yml”。确保“AcmeDemoBundle/Controller/SECUEDCONTROLLER”。php“bundle已正确注册并加载到应用程序内核类中。” 这是我的 处