[Seasar-user:8254] Re: Seasar プロジェクトで学ぶ、ソースコードリーディング!
宮本大輔
[E-MAIL ADDRESS DELETED]
2007年 6月 12日 (火) 20:34:13 JST
ご丁寧な解説、どうもありがとうございます。
不完全ながらもEA1を読んでみました。
SELに関しては、未だ後回しにしてしまっていますが…。
assembler や deployer のコードも読んでみたいのですが、
これらのクラスを読むには、どのバージョンを読めばいいでしょうか?
07/06/06 に Koichi Kobayashi<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 小林 (koichik) です.
>
> Date: Wed, 6 Jun 2007 01:21:38 +0900
> From: "宮本大輔" <[E-MAIL ADDRESS DELETED]>
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:8090] Re: Seasar プロジェクトで学ぶ、ソースコードリーディング!
>
> > S2ContainerSelImpl, selパッケージ, SelContextImpl 等、「sel」という単語片がありますが、
> > この「sel」は何を略したもので、どういった意図のものでしょうか?
>
> Seasar Expression Language ですかねぇ.
> JSP などの EL (Expression Language) と同類で,
> 式言語と呼ばれるものです.
>
> 今は OGNL という別の式言語が使われていて SEL は
> 使われていませんが,勉強目的ならシンプルな言語
> 処理系として見て損はないのではないかと.
> # といいつつ,自分が Seasar に関わるようになった時は
> # もう OGNL だったので SEL のソースは見たことありませんが.
>
>
> > その後、ComponentDefImpl#assemble() 辺りに到達して、ちょっと雲行きが怪しくなって来て
> > いるところですが、思いの外コードが読めるので、ちょっと嬉しくなっているところです。
>
> assembler と deployer が DI コンテナとしての Seasar2 の
> キモみたいなところなので頑張ってください!!
>
> 以下,多少 (?) ネタバレ気味なので最初は
> 見ない方がいいかも.(^^;
> どうにも困ったら,あるいは assembler/deployer の
> コードが理解できてからでも参考にどうぞ.
>
>
>
>
>
>
>
>
>
>
>
>
>
> DI ではコンポーネントのプロパティに別のコンポーネントが
> 設定されたりするわけですが,その様子を次のように
> 表したとします.
>
> +-----------+-------+
> | | | DI +-----------+
> | | prop1 |<-----| component |
> | | | +-----------+
> | +-------+
> | | | DI +-----------+
> | component | prop2 |<-----| component |
> | | | +-----------+
> | +-------+
> | | | DI +-----------+
> | | prop3 |<-----| component |
> | | | +-----------+
> +-----------+-------+
>
> 実際は右側のコンポーネントにもプロパティがあるので,
> 一つのコンポーネントに着目すると,
>
> +-----------+-------+ DI
> | | prop1 |<-----
> DI | +-------+ DI
> <-----| component | prop2 |<-----
> | +-------+ DI
> | | prop3 |<-----
> +-----------+-------+
>
> ということになります.
> コンポーネントには他のコンポーネントが DI されるし,
> 他のコンポーネントに DI されもするということですね.
>
> ここで図の右側,他のコンポーネントをプロパティ等に
> DI するのが assembler パッケージ役割になります.
>
> また,図の左側,他のコンポーネントに DI されたり,
> コンテナの利用者が S2Container#getComponent() を
> 呼び出したりした場合のためにコンポーネントを
> 送り出すのが deployer パッケージの役割になります.
>
> そんなわけで (どんなわけで?),S2Container 内部では
>
> deployer +-----------+------+ assembler deployer +-----------+------+ assembler
> <---------| component | prop |<---------- <---------| component | prop |<----------
> +-----------+------+ +-----------+------+
>
> という連鎖が起きていることになります.
> 実際には assembler や deployer は矢印に相当するわけでは
> ないので,もしかすると誤解を招く図かもしれませんが,
> このようにコンポーネントの右側 (assembler) と
> 左側 (deployer) で考えると役割を理解しやすいかと
> 思います.
>
>
> --
> <component name="koichik">
> <property name="fullName">"Koichi Kobayashi"</property>
> <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
> <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内