Personal tools
You are here: Home ブログ 井上 Spring Framework勉強会の資料を公開しました
« December 2010 »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Recent entries
Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23
Herokuの発音 inoue 2010-12-20
雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18
IPA未踏のニュース inoue 2010-12-15
労基法とチキンゲーム inoue 2010-12-06
フロントエンドエンジニア inoue 2010-12-03
ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25
技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24
雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22
RESTの当惑 inoue 2010-11-22
「プログラマのためのUXチートシート」を作りました inoue 2010-11-19
「ビューティフルコード」を読みました inoue 2010-11-16
Categories
カテゴリなし
 
Document Actions

Spring Framework勉強会の資料を公開しました

明日の資料です。

毒舌が少し入っていますが、年末なので許してください。

次のようなことを補足しました。

アプリケーションには、エンティティ的あるいはセッション的とでも呼ぶべきクラス群があると思います。実体(あるいは状態遷移)の表現を役割の主とするクラスです。このカテゴリを「エンティティ的」と呼びたいと思います。 一方、「エンティティ的」では無いクラスは、サービス提供を役割の主とすると考えます。一部は関数的かもしれません。多くは副作用(データベース更新など)を目的とするので、こちらのカテゴリを「サービス的」と呼びたいと思います。 インターフェースに対してプログラミングをして、具象クラスの実装から疎結合にすべきなのは「サービス的」なクラスの方です。つまり、DIで注入するのは、「サービス的」な具象クラスへの依存です。

「エンティティ的」なオブジェクトにも、DIとは別の視点で、インスタンス化の(一種の)分離があります。エンティティ的オブジェクトは、実行時のライフタイムの管理に複雑さが入り込みがちです(*)。このため、ライフタイム管理を、ある層に押しつけることは良くあります。上位層から見ると、ライフタイム管理を押しつけた層にインスタンス化の役割を分離、コード的に言うと隠蔽をすることになります。

これら2つは、インスタンス化の工程の分離という観点では似ていますが、基本的には違うものだと思います。

サービス的とエンティティ的が排他的だという主張ではありません。また、後者の用途にSpringのBean Factoryを使うことはできます。

(*)GCがあるとメモリ管理の複雑さからは解放されますが、性能問題などの複雑さは残りつづけます。

説明に対する補足です。

ApplicationContext ac = new FileSystemXmlApplicationContext("di3.xml");
DiTest3 di3 = (DiTest3)ac.getBean("di3");

2行目の部分の裏にnew DiTest3()のような処理があると思ってください、と言いましたが、かなり誤解を招く説明なので訂正します。 より現実の動作に近い説明をすると、次のようになります。

ApplicationContext ac = new FileSystemXmlApplicationContext("di3.xml");
// => global_map.put("di3", new DiTest3());
DiTest3 di3 = (DiTest3)ac.getBean("di3");
// => (DiTest3)global_map.get("di3");

global_mapの型はMap<String,Object>だと見なしてください。

スコープに応じて、global_mapの部分が、HttpSessionだったり、HttpRequestだったりします("di3"がattribute名に相当します)。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/spring-workshop/tbping

Re:Spring Framework勉強会の資料を公開しました

Posted by anaka at 2006-12-20 19:10
> (ビルド時の)「コードの自動生成」は(やり方を間違わなければ)良いプラクティスですが、ツールによる「コードの自動挿入」はバカげた手段です。

つまり、privateな属性にannotationを記述して、コンパイル時にgetter/setterを自動生成せよと。
…C#の属性そのまんまじゃん。
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.