もう、だいぶ前の話ですが、CotoGoto(コトゴト)の開発を続けていく上で、Seasar2のサポートが2016年9月26日を以って終了。その移行先を求めて、以下の対応をとりました。
移行前 | 移行後 | |
---|---|---|
Controller | Struts2 | Struts2 |
DI | Seasar2 | Google guice |
DAO | S2Dao | Doma2 |
Controller
Controllerとして使っていた、Struts2はもともと変更する必要が無かったので、そのまま移行。
Seasar2のファミリーではなく、Struts2を利用していたので、ここだけは正直負担が軽減された。
DI
DIの部分をフルスタックフレームワークに置き換えるかという選択肢もあったが、Springを使うにしても学習コストが高くなるため、マイクロサービス化していく方針にする。
Seasarもそうだが、フルスタックフレームワークは、バージョンアップ時の変更対応が全体に及ぶ危険性もありますからね。
DAO
Daoの部分が案外一番、置き換えの余波が大きくなるため、Seasar2の中でもEOLにならなかった。
S2Daoのスタイル(DAOパターンや2 Way SQL)を踏襲しているDoma2を利用する。
おかげでSQLファイルをある程度そのまま移行できたので、作り直しは発生せずにうまくできた。
その他
その他の部分でS2Dxoをモデルマッパーとして使ってたので、こちらも置き換えが発生。
Apache Commons BeanUtilsを使ってEntityとDtoの変換をしてみると、Doma2ではjava.time.LocalDateTimeが使われていて、今まではjava.sql.Timestampを使っていたため、変換エラーが多発。
この変換部分を自作で対応したりする必要がありました。null変換も対応したり。
最後に
seasar2の移行先ということで、世間的にはSpringに移行する流れが主流な気もしますが、それ以外の移行パターンもあったりするので、ご参考になればと思います。