[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 メーリングリストの案内