如何在Spring Boot应用程序中为日历和日期设置全局格式化程序

时间:2016-03-23 16:34:43

标签: spring-mvc spring-boot

在Spring Boot应用程序中,我想在Spring MVC中为 Calendar Date 值设置一个全局格式化程序。

我找到了 spring.mvc.date-format 属性,该属性允许设置全局格式化程序,但仅适用于 Date 类型。由于我想对 Calendar 类型使用相同的格式,我创建了以下配置类:

@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {

  @Autowired
  private Formatter<Date> dateFormatter;

  @Override
  public void addFormatters(FormatterRegistry registry) {
    if (dateFormatter != null) {
      registry.addFormatterForFieldType(Calendar.class, this.dateFormatter);
    }
  }
}

它正在为Spring MVC的Spring Boot自动配置创建的日期重用相同的格式化程序,并且它按预期工作。

我的问题是:这是正确的做法,还是我错过了什么?不应该在Spring Boot自动配置中以这种方式处理,为日期和日历类型设置相同的格式化程序吗?

编辑:我发现,如果你没有加载Spring Boot应用程序的测试(使用 @SpringApplicationConfiguration ),之前的配置类就会失败,不执行引导自动配置,然后dateFormatter不可用。将 @Autowired 注释更改为 @Autowired(required = false)可以解决问题,但我仍然不确定&#34;正确性&#34;解决方案。

更新了配置类:

@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {

  @Autowired(required = false)
  private Formatter<Date> dateFormatter;

  @Override
  public void addFormatters(FormatterRegistry registry) {
    if (dateFormatter != null) {
      registry.addFormatterForFieldType(Calendar.class, this.dateFormatter);
    }
  }
}

0 个答案:

没有答案