Jackson 2.10 についてのメモ
ざっくりいうと
- Jackson 2.10 は Jackson 3 のインターフェースを含みつつ 2 系の旧インターフェースを新インターフェースを
@Deprecated
扱いで含んだリリース - Spring Boot 2.2 は Jackson 2.10 に依存している
- Boot 2.2 にした段階で、Deprecation Warnings でまくるからシュッと Jackson 3 にしたほうが良さそう。
Jackson 2.10 features - @cowtowncoder - Medium を参考のこと。
Jackson 2.10 は、Jackson 3 に向けての Migration 用のリリースになっている。2.9までのインターフェースも @Deprecated
状態で残しつつ、3以後のあたらしいインターフェースも実装されている。今のうちに新しいインターフェースに移行しておくと後々楽になる、と思う。
(Spring Boot 2.2 は Jackson 2.10 に依存している)
2.10 では以下の3つのメジャーなイシューを解決している。
- デシリアライズ時におけるセキュリティイシューの根本解決
- 3.0 における新しいインターフェースへの移行促進
- module-info.class 関連
で、1 はまあいいとして、2 が重要だなと思っている。新しいインターフェースがどういうものかというと以下のような感じ。
- Builder Pattern ベースになっている
- 特定のフォーマット固有のオプションとそうじゃないものの分離
の2点が新しいインターフェースの特徴。mutable な deserializer とか、最近は流行らないからね。
Jackson 3.0 以後では ObjectMapper は configuration 系のメソッドは持たない。