在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);
}
}
}