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

Hiroaki Fujii [E-MAIL ADDRESS DELETED]
2007年 11月 15日 (木) 21:34:34 JST


藤井です。

仕様ではないですか..

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