Spring MVC の Converter

2018/02/28   #Java  #Spring Framework 
このエントリーをはてなブックマークに追加

Spring MVC に Converter という型変換の仕組みがあり、
これは @InitBinderPropertyEditor なやつとどう違うのか、どう使い分けるのか。

まず、Converter はこのような感じ。
Spring From the Trenches: Using Type Converters With Spring MVC

Converter は Spring 3 からのフィーチャーで後発。
公式ドキュメント(4.3.x): 9. Validation, Data Binding, and Type Conversion

ここにそれっぽい回答が書いてあった。
java - Spring MVC type conversion : PropertyEditor or Converter? - Stack Overflow

ようするに、

  • @InitBinderPropertyEditor なやつは、UI 由来のリクエストパラメータを受け取る際にアプリケーションが扱いやすい型に変換する場合に使う
  • Converter は UI だけでなくアプリケーションの任意の場面で、ある型から望みの型に変換する場合に使う

ということらしい。

また、この回答に対するコメントにも興味深いことが書かれており、

  • PropertyEditor はステートフルで何度も作成される
  • Converter はステートレス

ということみたい。