[[JAVAの記事一覧]] *目次 [#n8f7128a] #contents *DIコンテナについて [#kfa94733] 「依存性の注入」って言っているサイトがあるが、日本語わかってんのか? よく言われる特徴としては、疎結合。これだとようわからんので、かんたんにいうと。今までつながっていた部品をブツブツ区切って、途中のつなぎ役として汎用的に使える部品をはさめるようにしましたってこと。 なんに使うのかというと、一番便利なのが単体テストだろうね。いろいろなテスト条件に基づいてオブジェクトを生成することが可能になるから、テストのパターンの網羅と実行が容易になるから、便利だというのが、そのりゆうです。 **大体の方針 [#wfeb4ac2] ブツブツとDAOやBLなどの層で区切りたいクラスがあれば、変わりになるインタフェースを作製しておいてそれを使うようにする。 ***区切り方 [#c2365344] たとえばDaoとDaoImplのクラスがあったとしたら、コードにDaoのアクセサを用意してImplのインスタンスを扱うコードを書かないようにする。 インスタンスは、フレームワークで用意したりする。 **名前の由来について思うこと [#j5fdb563] たぶん、汎用的な部品のイメージがバネのようなもんだから、Springという名前になったんだとおもう。 実装ではSpringとかSeaser2とかだ *Spring(本家 英語) [#qb6dc595] http://www.springsource.org/ **ダウンロード [#j56af583] http://www.springsource.org/download Javaのバージョンによる制限があります。 -Spring Framework 3.0.3.RELEASE is the current production release (requires Java 1.5+) -Spring Framework 2.5.6.SEC01 is the latest Spring 2.5.x release (compatible with Java 1.4+) -Spring Framework 2.0.8 is the latest Spring 2.0.x release (compatible with Java 1.3+) **SpringFrameworkの導入 [#wb1fc0c7] http://works.dgic.co.jp/djwiki/Viewpage.do?pid=@537072696E674672616D65776F726BE5B08EE585A5E7B7A8 ダウンロードして解凍したらdistというフォルダがあるので、その中のspringをEclipseのパスに通すといいらしい。 spring-framework-2.5.6.SEC01\dist **ビルドパスに追加 [#rba1b8ec] [Eclipse]-[プロジェクトのプロパティ]-[Javaのビルドパス]-[ライブラリー]-[外部Jarの追加] **Springの入門 [#zf28c3dc] https://www.myeclipseide.jp/modules/contents04/index.php?id=32 **Spring での Object/XML マッピングのサポートを探る [#f7d9a271] http://www.ibm.com/developerworks/jp/xml/library/x-springXOM/ **Spring Framework 3.0の新機能 Part1 [#m255a7d0] http://netforestdevnote.blog26.fc2.com/blog-entry-4.html **Spring Framework 3.0の新機能 Part2 [#ce90e91d] http://netforestdevnote.blog26.fc2.com/blog-entry-14.html **Spring Framework 3.0の新機能 Part3 [#q12f3530] http://netforestdevnote.blog26.fc2.com/blog-entry-23.html *Seaser2の入門 [#cf00a708] http://snowhiro.web.fc2.com/seasar2/seasar2_index.html Seaser2もブツブツインタフェースで区切って、 設定ファイルで関係付けしてといったぐあい **s2Dao [#ie331235] 最大のメリットはSQLの自動生成 **S2JDBCとActiveRecordの比較 [#l54821b6] S2JDBCとRailsのActiveRecordは、エンティティとテーブルは同一構造となる点は同様だが、細かいようで重要な違いとしてActiveRecordは豊富なメタプログラミングを駆使してエンティティの操作に対して豊富なフックを用意しおり様々な介入を行えます、それらを利用してデータ格納先としてのEntityに限定されず比較的ロジックを内部に保持できます。 JPAではエンティティマネージャから返却されるインスタンスはプロキシ化やエンハンスを行いEntityライフサイクル内で限定的な介入を行えますが、一般的にはあまり使われていないようです。対するS2JDBCはエンティティを純粋なPOJOとして扱います。意図しない挙動をしないため解り易いなどメリットと柔軟性のトレードオフで一概にどちらが優れているとは言えません。Seasarシリーズには実用的で便利な2WaySQLがあったり言語特製もふまえ同列で比較出来ない差を感じます! そういえばHibernateよりCayenneが使いやすいといった意見を見た事があるのを思い出しました。JPA対応とかしてたような気がするのですがJPAエンティティライフサイクルの問題とかHibernateに対する違いってどうなんでしょうね? *何が省力になるのか [#w38daeda] -単体テストがしやすくなる。 *何が不便になるのか [#ba9424ad] Springの2.5までは下記の問題があった。 -Javaの静的型チェックができなくなる -xmlの定義が面倒 でもSpring3.0からは改善されている模様。