ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Springは心を改めた

Springの新しいメンテナンスポリシーが物議をかもし出しましたが、あまりに批判が多かったからか、修正版のメンテナンスポリシーを発表しました。

We are amending our maintenance policy in the light of community feedback. We will make regular binary releases from the Spring trunk available to the community, with no 3 month window. For each version of Spring, community releases will be available while it remains the trunk or until the next version is stable.

amendは「規則を改正する」という意味以外に「改心する」という意味もあるので、その辺もかけているのかもしれません。


修正されたポリシーでは、新しいメジャーバージョンが出てから、三ヶ月しか無償のメンテナンスリリースはされないという部分が改正されて、新しいメジャーバージョンのRCが出るまでは、前のバージョンのメンテナンスリリースは続けられることになりました。
新しいバージョンのRCが出た後に、古いバージョンがバグフィックスが欲しい場合は、エンタープライズ版のサポートを買う必要があります。


とりあえず、Springユーザとしては一安心ですね。


ただ、大手SIer、あるいはユーザがサポートにうるさいところは、エンタープライズ版のサポートを買う必要があると思います。そうじゃないと安心して使えないから。


Slim3がどうするかっていうと、もうSpringに振り回されたくないので、コンテナは独自に実装するという方針を貫こうと思います。
Slim3は、もともとSAStrutsの生産性の高さが売りでしたが、S2JDBCS2JDBC-genの組み合わせで、タイプセーフに流れるようなインターフェースでSQLを組めるようになったし、エンティティからスキーママイグレーションもできるようになったので、Spring対応しなくても戦力的に十分に戦えると思っています。


ふたがわさんのところからネタを持ってきますが、新S2JDBCでは、サービスを次のように書けるようになります。


public ThesisProfUser findByUidAndYear(String userId, int year) {
return select()
.leftOuterJoin(year())
.leftOuterJoin(profUser())
.leftOuterJoin(thesisAssignmentList())
.leftOuterJoin(thesisAssignmentList().thesisStudentUser())
.leftOuterJoin(
thesisAssignmentList().thesisStudentUser().studentUser())
.leftOuterJoin(thesisAssignmentList().assignmentVoteList())
.where(eq(profUser().uid(), userId), eq(year().year(), year))
.getSingleResult();
}
http://jfut.featia.net/diary/20081008.html#p01


これは、超強力ですよ。引数のuserIdやyearもエンティティのプロパティの型とあっているかが、タイプセーフに検証されます。