formatter是什么意思(39Spring MVC的Formatter)

上篇我们学习了《38-Spring MVC的Interceptor》,本篇我们学习Spring MVC Formatter配置和使用。 3.4 Formatter org.springframework.format.Formatter是Spring提供用来替代PropertyEditor...

上篇我们学习了《38-Spring MVC的Interceptor》,本篇我们学习Spring MVC Formatter配置和使用。

39-Spring MVC的Formatter

3.4 Formatter

org.springframework.format.Formatter是Spring提供用来替代PropertyEditor的,PropertyEditor不是线程安全的,每个web请求都会通过WebDataBinder注册创建新的PropertyEditor实例,而Formatter是线程安全的。

我们可以定义一个类似于PersonEditor的PersonFormmater,它实现Formatter接口:

public class PersonFormatter implements Formatter<Person> { ////处理逻辑和PersonEditor一致 @Override public Person parse(String text, Locale locale) throws ParseException { String[] personStr = text.split("\\|"); Long id = Long.valueOf(personStr[0]); String name = personStr[1]; Integer age = Integer.valueOf(personStr[2]); return new Person(id, name, age); } @Override public String print(Person object, Locale locale) { return object.toString(); }}

Spring MVC下通过WebConfiguration重载WebMvcConfigurer接口的addFormatters方法,使用FormatterRegistry来注册Formatter:

@Configurationpublic class WebConfiguration implements WebMvcConfigurer { @Override public void addFormatters(FormatterRegistry registry) { registry.addFormatter(personFormatter()); } @Bean public Formatter personFormatter(){ return new PersonFormatter(); }}

Spring Boot为我们提供了更简单的配置方式,我们只要注册Formatter的Bean即可而无需使用addFormatters方法。

@Beanpublic Formatter personFormatter(){ return new PersonFormatter();}

此时还要要注释掉InitBinderAdvice里的代码注册registerPersonEditor的代码,不然PersonEditor会和PersonFormatter冲突。

除了用addFormatters方法来注册外,我们还可以通过InitBinderAdvice中@InitBinder注解的方法来注册Formatter:

@ControllerAdvicepublic class InitBinderAdvice { @InitBinder public void addPersonFormatter(WebDataBinder binder){ binder.addCustomFormatter(new PersonFormatter()); }}

我们用控制器验证:

@GetMapping("/formatter")public Person formatter(@RequestParam Person person){ return person;}39-Spring MVC的Formatter

39-Spring MVC的Formatter

39-Spring MVC的Formatter

  • 发表于 2022-12-07 13:53:17
  • 阅读 ( 134 )
  • 分类:科技

0 条评论

请先 登录 后评论
_很特别喔!
_很特别喔!

636 篇文章

你可能感兴趣的文章

相关问题