SeasarCon2009White: Slim3のすべて
※2011/01/18追記: どうも勘違いする人が多そうなので、追記しておきます。ここに書いてあるSlim3は現在のGAE向けのフレームワークのSlim3ではなく、その前に構想されていたSpringの薄いラッパーとしてのSlim3です。名前は一緒だけど全然別物ですし、現状、実体としては存在しません。なので今更この記事みても得るところはほとんど無いのでご注意ください。
- もう少しでリリースできそう - full-stack web application framework - slim3 is agile HOT deployment Less configuration CoCとAnnotationでの指定をうまく混ぜながら。 only CoCとかall annotation(1つのメソッドに5つぐらいついてるとか)はやりすぎ。 Less learning cost Struts1.2系とJDBCの薄いラッパー 経験があればすぐ分かる 1日かからずに基本的な使い方が分かる、と思う ちなみに今までのSeasarだと1日半ぐらい - Less is More モダン建築の人が言い出した概念らしい パレートの法則 slim3では20%の問題を解くことに集中 経験上複数PJで共通的に使える部分はだいたい20%ぐらいだと思う - #おお、Springをベースにしてる - Slim3 Container Less configuration HOT deployment For functinal requirements ユーザ要件に関するコンポーネントを管理することを想定 なんでも管理するわけじゃない 非機能要件てきなものは、Springをそのまま使う Annotationは全てJava標準に従う DI @Resource フィールド名ベースでコンポーネントをDI name属性で明示指定も可能 シンプルなコンポーネント名解決戦略 (資料参照) これで対応できない場合は、springの設定ファイルに書けばok Constant injection 定数を自動インジェクションする #面白そう Transaction @TransactionAttribute デフォルトのトランザクションはREQUIRED valueで別のタイプを指定できる AOP Seasar2と同様に、AOP allianceの仕様に基づく デフォルトインタセプタ あるパッケージ以下に同じインタセプタを仕掛けることが簡単にできる @Interceptors 個別にAOPも仕掛けられる Slim3としてSpringに登録するクラスは3つだけ アプリケーションサーバを自動認識してトランザクションマネージャの設定をしてくれる Seasar2のenvは、Slim3ではstageという概念になっている Stageごとに細かく設定を切り替えることができる - Slim3 Struts Slime3 StrutsではAcitonFormは分離せずにAcitonに書いてしまうのが基本 SAStrutsでは分離が基本だった AcitonFormをセッションに格納することになったときにActionと一体だと困る為 Slim3ではフィールドごとにセッションに格納できるようになった @SessionScope これによってActionとActionFormを1つにしても困らなくなった。 SAStrutsでは pretty URL のためクエリストリングを使わないようにしていた ただしオーバヘッドがある Slim3ではシンプルにクエリストリングをそのまま使う - Slim3 JDBC S2JDBCとはだいぶ違う 以下を解決することに集中 Connection, Statement, ResultSetのcloseとか ResultSet→Javaへのコンバートとか 外だしSQLは対応 S2JDBCの流れるようなインタフェースは非対応 S2JDBCユーザで使い分けに悩んでる人もいたので、Slim3では割り切ってSQL書こうぜ!というスタイルにした ただし、基本的なfindById,update,deleteとかは自動生成しようと思っている 新機能 SQLのバインド変数の部分で型指定できるようになった Mapによるパラメータ渡しが可能になった SQLファイルから条件DTOを自動生成できる (dbFluteっぽい) SQLのIFコメントはやめた? Javaコードで条件を組み立てられるようになった。 件数取得のSQLをわざわざ作らなくても、検索用のselect文をgetCountに食わせるとcountに置換して実行してくれるようになった。 Slim3では、気持ちよくSQLをかけるようにサポートをしている - 例外のエラーメッセージがユーザフレンドリー どうやったら解決するかをサジェストしてる - HOT deployのセッション問題に対応済み セッションのラッパーを入れた