0
在使用Web MVC開發REST API的Spring引導應用程序中。一切正常。在外部jar中彈出自定義格式化程序
至字符串轉換爲ZonedDateTime,我創造了這個註釋:
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface DateTimeFormatter {
}
這裏是自定義格式:
public class ZonedDateTimeFormatter implements Formatter<ZonedDateTime> {
@Override
public String print(ZonedDateTime zoneddateTime, Locale locale) {
return .....
}
@Override
public ZonedDateTime parse(String text, Locale locale) throws ParseException {
return ......
}
}
這就是我如何添加格式化,
@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrix
@Configuration
public class IndexApplication extends SpringBootServletInitializer {
...
@Configuration
public static class ApplicationFormatterRegistrar extends WebMvcConfigurerAdapter implements FeignFormatterRegistrar {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addFormatterForFieldAnnotation(new ZonedDateTimeAnnotationFormatterFactory());
}
@Override
public void registerFormatters(FormatterRegistry registry) {
registry.addFormatter(new ZonedDateTimeFormatter());
}
}
}
這是我如何測試應用程序(Spring mockmvc):
this.mockMvc = MockMvcBuilders.standaloneSetup(indexResource).build();
......
@Test
public void should_accept_valid_request() throws Exception {
when(service.getSomething(id, begin, end)).thenReturn(somevalue);
mockMvc.perform(
get("/index/{id}", 1)
.param("start", "2011-12-03T10:15:30")
.param("end", "2011-12-03T10:15:30")
).andExpect(status().isOk());
}
所有工作正常。問題是我想將自定義註釋@DateTimeFormatter
放在所有項目的通用jar中,在這種情況下,Spring MVC不會註冊自定義轉換器!我不明白爲什麼。 您的幫助,將不勝感激。
我可以看到github中的代碼? –
不,你不能。 –
好男人,祝你好運 –