<br><font size=2 face="sans-serif">お世話になっております。高木と申します。</font>
<br>
<br><font size=2 face="sans-serif">S2Containerの動きを理解させていただきたく、ソース解析をさせていただいます。</font>
<br>
<br><font size=2 face="sans-serif">そこで、質問がございます。</font>
<br><font size=2 face="sans-serif">場違いかと思いますが、ご教示いただけばと思います。</font>
<br>
<br><font size=2 face="sans-serif">-------------------------------------------------------------------------------------------------------</font>
<br><font size=2 face="sans-serif">質問:DI対象クラスを</font><font size=1 face="élér âSâVâbâN">prototype</font><font size=2 face="sans-serif">で指定し、同じcomponentを2回取得する場合、2回目はインスタンス生成した後、取得する</font>
<br><font size=2 face="sans-serif"> と書籍等に記載されておりますが、ソース上で具体的にどこで実装されているのでしょうか?</font>
<br><font size=2 face="sans-serif">-------------------------------------------------------------------------------------------------------</font>
<br>
<br><font size=2 face="sans-serif">現時点で、わかっていることは下記の流れのみです。</font>
<br><font size=2 face="sans-serif">(※)間違いがあればご指摘いただけばと思います。</font>
<br>
<br><font size=2 face="sans-serif"> 1.パスの設定</font>
<br><font size=1 face="élér âSâVâbâN">
SingletonS2ContainerFactory.<i>setConfigPath</i>(XMLのパス)</font>
<br>
<br><font size=2 face="sans-serif"> 2.DIコンテナ生成(対象メソッドinit)</font>
<br><font size=2 face="sans-serif">
XML解析→DIコンテナ生成→初回キャッシュ</font>
<br><font size=2 face="sans-serif">
</font><font size=1 face="élér âSâVâbâN">SingletonS2ContainerFactory.<i>init</i>();</font>
<br><font size=2 face="sans-serif">
</font>
<br><font size=2 face="sans-serif">
・DIコンテナ生成</font>
<br><font size=1 face="élér âSâVâbâN">
org.seasar.framework.container.factory</font><font size=2 color=blue face="sans-serif">.</font><font size=1 color=blue face="élér âSâVâbâN"><u>ComponentsTagHandler</u></font><font size=2 face="sans-serif">クラスの</font><font size=1 face="élér âSâVâbâN">createContainer</font><font size=2 face="sans-serif">()メソッドで</font>
<br><font size=2 face="sans-serif">
</font><font size=1 face="élér âSâVâbâN">
ClassUtil</font><font size=2 face="sans-serif">クラスの</font><font size=1 face="élér âSâVâbâN">newInstance</font><font size=2 face="sans-serif">()メソッドを呼び出しています。</font>
<br><font size=2 face="sans-serif">
</font>
<br><font size=2 face="sans-serif">
・初回キャッシュは</font>
<br><font size=2 face="sans-serif">
</font><font size=1 face="élér âSâVâbâN">org.seasar.framework.container.factory.ComponentTagHandlerクラスのstart()メソッドで</font>
<br><font size=1 face="élér âSâVâbâN">
componentClass
= ClassUtil.<i>forName</i>(className)を用い、インスタンス生成しています。</font>
<br>
<br><font size=2 face="sans-serif"> 3.コンポーネント取得(1回目)(対象メソッドgetComponet)</font>
<br><font size=2 face="sans-serif"> 4.コンポーネント取得(2回目)(対象メソッドgetComponet)</font>
<br><font size=2 face="sans-serif">-------------------------------------------------------------------------------------------------------</font>
<br>
<br><font size=2 face="sans-serif">3のコンポーネント取得の場合、DIコンテナへキャッシュしたものを取り出すと思うのですが、4の動き(2回目のコンポーネントのインスタンス化)</font>
<br><font size=2 face="sans-serif">をまだ把握出来ておりません。</font>
<br>
<br><font size=2 face="sans-serif">唐突な質問となってしまい、大変申し訳ございません。</font>
<br><font size=2 face="sans-serif">お手数おかけしますが、ご教示いただければと思います。</font>
<br>
<br><font size=2 face="sans-serif">以上、よろしくお願いいたします。</font>
<br>