[[JAVAの記事一覧]] *目次 [#n8f7128a] #contents *DIコンテナについて [#kfa94733] よく言われる特徴としては、疎結合。これだとようわからんので、かんたんにいうと。今までつながっていた部品をブツブツ区切って、途中のつなぎ役として汎用的に使える部品をはさめるようにしましたってこと。 **大体の方針 [#wfeb4ac2] ブツブツ区切りたいクラスがあれば、変わりになるインタフェースを作製しておいてそれを使うようにする。 **名前の由来について思うこと [#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 *spring-test.jar [#k9376870] JUnitと Springを連携させるには、spring.jarの他に spring-test.jar が必要となる。 **Eclipseについてる JUnitを捨てる [#hffd8fe1] Eclipseについている JUnitはちょっと古くて、Springに対応するために必要なインターフェイスJUnit4ClassRunnerが存在していない。なので Eclipseに標準で付属している JUnitをビルドパスから外し、最新の JUnitへビルドパスを通す必要がある。その場合でも "Run as"→"JUnit TestCase"はちゃんと動くので心配ない。 「spring-mock.jar」はSpring 2.5ではTestContextフレームワークに焦点を絞った「spring-test.jar」に置き換えられました。しかし「spring-test.jar」には「spring-mock.jar」の内容がすべて含まれているので、既存の単体・結合テストで使用する場合でもそのまま置き換えることができます。 **参考URL [#b5d9a043] http://walbrix.net/blog/2010/05/spring.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からは改善されている模様。