В приложении Spring загрузки с использованием Web MVC для разработки API REST. Все работает нормально.Весенний пользовательский форматировщик во внешней банке
Для преобразования строки в 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
в общую банку для всех проектов, в этом случае Spring MVC не регистрирует пользовательский конвертер! Я не понимаю, почему. Ваша помощь будет оценена по достоинству.
Я могу видеть код в github? –
Нет, вы не можете. –
ok men, удачи –