[seasar-dotnet:648] Re: コンポーネント・アスペクト自動登録について

Kazuya Sugimoto [E-MAIL ADDRESS DELETED]
2007年 11月 15日 (木) 22:31:04 JST


杉本です。

分かりました。
>        <property name ="MainForm">FrmMain</property>
この部分があるので、先にFrmMainがインスタンス化されて、
その後、自動登録されているからですね。

AppContextを自動登録の後に持ってくると、OKだと思います。


07/11/15 に Hiroaki Fujii<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 藤井です。
>
> 仕様ではないですか..
>
> S2Containerは初期化はしていますね。
>
> diconファイルはこんな感じです。
>
> <?xml version="1.0" encoding="utf-8" ?>
> <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
> "http://www.seasar.org/dtd/components21.dtd">
> <components >
>    <include path="Ex.dicon"/>
>
>    <component name="AppContext"
> class="Seasar.Windows.S2ApplicationContext" >
>        <arg>container</arg>
>        <property name ="MainForm">FrmMain</property>
>    </component>
>
>    <!-- この下のクラス登録パターンを修正します。 -->
>    <component
> class="Seasar.Framework.Container.AutoRegister.AssemblyComponentAutoRegister">
>        <!-- Service層実装クラスを登録 -->
>        <initMethod name="AddClassPattern">
>            <arg>"Hoge.Sample.Logics.Impl.Service"</arg>
>            <arg>".*"</arg>
>        </initMethod>
>        <!-- コンバーターの登録 -->
>        <initMethod name="AddClassPattern">
>            <arg>"Hoge.Sample.Logics.Service"</arg>
>            <arg>"IConvert.*"</arg>
>        </initMethod>
>        <!-- 下記は必ず必要 -->
>        <initMethod name="RegisterAll"/>
>    </component>
>
>    <!-- S2DAOのAspect登録。この下のクラス登録パターンを修正します。-->
>    <component
> class="Seasar.Framework.Container.AutoRegister.AspectAutoRegister">
>        <property name="Interceptor">Ex.DaoInterceptor</property>
>        <initMethod name="AddClassPattern">
>            <arg>"Hoge.Sample.Logics.Dao"</arg>
>            <arg>"I.*"</arg>
>        </initMethod>
>        <initMethod name="RegisterAll" />
>    </component>
>
>    <!-- トランザクションAspect登録。この下のクラス登録パターンを修正し
> ます。-->
>    <component
> class="Seasar.Framework.Container.AutoRegister.AspectAutoRegister">
>        <property name="Interceptor">Ex.LocalRequiredTx</property>
>        <property
> name="Pointcut">"Update,Delete,Insert,Add,Regist,Create"</property>
>        <initMethod name="AddClassPattern">
>            <arg>"Hoge.Sample.Logics.Impl.Service"</arg>
>            <arg>".*"</arg>
>        </initMethod>
>        <initMethod name="RegisterAll" />
>    </component>
>
>    <!-- ここで自動登録外を登録 -->
>    <component name ="FrmMain" class ="Hoge.Sample.Forms.FrmEstOutput"/>
> </components>
>
>
>
> Kazuya Sugimoto さんは書きました:
> > 杉本です。
> >
> > 仕様ではないです。
> >
> > 実際に自動登録の設定の後にコンポーネント定義を追加して、自動登録された
> > コンポーネントが自動バインディングされるか確認してみましたが、問題なく
> > バインディングされることを確認しています。
> >
> > S2Containerの初期化はされてますよね?
> > Diconファイルを見せてもらっても良いでしょうか。
> >
> > 07/11/15 に Hiroaki Fujii さんは書きました:
> >> 藤井です。
> >>
> >> 仕様かどうか確認させてください。
> >>
> >> 自動登録したコンポーネントを、今まで通りdiconファイル内で登録した
> >> コンポーネントにバインドするとうまくバインドしてくれません。
> >>
> >> diconファイル内で、自動登録させる前も、させた後も、アスペクトの
> >> 自動登録した後でも、今までの通りにコンポーネントを登録してみましたが、
> >> うまくいきませんでした。
> >>
> >> 具体的には、
> >> diconファイル内で、コンポーネントを自動登録した後、FrmEstOutputと
> >> いうWindowsFormを今までの通りに
> >> <component class="Hoge.Sample.Logics.Impl.EstOutputServiceImp"/>
> >> と登録して、実行してみました。
> >>
> >> Seasar.Framework.Container.Assembler.AutoPropertyAssembler: WARN
> >> 2007-11-09 21:46:53,344 [11]:0 Hoge.Sample.Forms.FrmEstOutputのプロパ
> >> ティ(Service)が見つからないので設定をスキップします
> >>
> >> という表示がログに出力されました。ServiceはIEstOutputServiceという
> >> interfaceの型のプロパティです。
> >> このinterfaceをインプリメントしたEstOutputServiceImpというクラスを登録
> >> しています。
> >>
> >> やはり自動登録するときは全て自動登録しないといけないのでしょうか?
> >>
> >
> >
> >
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


-- 
Kazuya Sugimoto
Microsoft MVP Visual Developer - Solutions Architect
http://d.hatena.ne.jp/sugimotokazuya/


seasar-dotnet メーリングリストの案内