小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

組件的自動注冊

 MFCDialog 2012-11-13

組件的自動注冊

根據(jù)自動綁定的原理,DI的設(shè)定幾乎可以做近乎全部的自動化。 使用備注碼就有可能進(jìn)行更加細(xì)致的設(shè)定。 更進(jìn)一步、對組件的注冊也進(jìn)行自動化的話,就可以稱為組件的自動注冊機能了。

org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister

是從文件系統(tǒng)中將類檢索出來對組件進(jìn)行自動注冊的組件。

屬性 說明
instanceDef 在自動注冊的組件中指定適用的InstanceDef。用XML指定的場合下,
@org.seasar.framework.container.deployer.InstanceDefFactory@REQUEST
這樣來指定。
autoBindingDef 在自動注冊的組件中指定適用的AutoBindingDef。用XML指定的場合下,
@org.seasar.framework.container.assembler.AutoBindingDefFactory@NONE
這樣來指定。
autoNaming 可以根據(jù)類名來自動決定組件名的組件。需要實裝 org.seasar.framework.container.autoregister.AutoNaming interface。默認(rèn)狀態(tài)下,使用 org.seasar.framework.container.autoregister.DefaultAutoNaming類的實例。

方法 說明
addClassPattern 將想要自動注冊的類模式注冊。最開始的一個參數(shù)是組件所在包的名字。子包也能被以回歸的方式進(jìn)行檢索。第二個參數(shù)是類的名字??梢允褂谜齽t表達(dá)式。也可以用“,”分隔做復(fù)數(shù)個設(shè)定。
addIgnoreClassPattern 將不想自動注冊的類模式注冊。最開始的一個參數(shù)是組件所在包的名字。子包也能被以回歸的方式進(jìn)行檢索。第二個參數(shù)是類的名字??梢允褂谜齽t表達(dá)式。也可以用“,”分隔做復(fù)數(shù)個設(shè)定。
org.seasar.framework.container.autoregister.JarComponentAutoRegister

從Jar文件中檢索類自動注冊組件的組件。

屬性 說明
jarFileNames 指定設(shè)定對象的jar文件名??梢允褂谜齽t表達(dá)式。但是能包含后綴。指定復(fù)數(shù)個對象的場合下,用“,”做分割符。例如,myapp.*, yourapp.*這樣。
referenceClass 用這個屬性指定的類所屬的jar文件的父路徑為基礎(chǔ)路徑(例如,WEB-INF/lib)。默認(rèn)的是org.aopalliance.intercept.MethodInterceptor.class。
instanceDef 適用于自動注冊的組件的InstanceDef的指定。在XML中如下,
@org.seasar.framework.container.deployer.InstanceDefFactory@REQUEST
這樣指定。
autoBindingDef 適用于自動注冊的組件的AutoBindingDef的指定。在XML中如下,
@org.seasar.framework.container.assembler.AutoBindingDefFactory@NONE
這樣指定。
autoNaming 根據(jù)類名自動決定組件的名稱的組件。需要對 org.seasar.framework.container.autoregister.AutoNaming interface 進(jìn)行實裝。默認(rèn)的情況下是 org.seasar.framework.container.autoregister.DefaultAutoNaming類的實例。

方法 說明
addClassPattern 將想要自動注冊的類模式注冊。最開始的一個參數(shù)是組件所在包的名字。子包也能被以回歸的方式進(jìn)行檢索。第二個參數(shù)是類的名字??梢允褂谜齽t表達(dá)式。也可以用“,”分隔做復(fù)數(shù)個設(shè)定。
addIgnoreClassPattern 將不想自動注冊的類模式注冊。最開始的一個參數(shù)是組件所在包的名字。子包也能被以回歸的方式進(jìn)行檢索。第二個參數(shù)是類的名字??梢允褂谜齽t表達(dá)式。也可以用“,”分隔做復(fù)數(shù)個設(shè)定。
org.seasar.framework.container.autoregister.ComponentAutoRegister

將類從文件系統(tǒng)或者Jar文件中檢索出來并將組件自動注冊的組件。

屬性 說明
instanceDef 適用于自動注冊的組件的InstanceDef的指定。在XML中如下,@org.seasar.framework.container.deployer.InstanceDefFactory@REQUEST這樣指定。
autoBindingDef 適用于自動注冊的組件的AutoBindingDef的指定。在XML中如下,
@org.seasar.framework.container.assembler.AutoBindingDefFactory@NONE
這樣指定。
autoNaming 從類的名稱來自動決定組件的名稱的組件。需要對 org.seasar.framework.container.autoregister.AutoNaming instance進(jìn)行實裝。默認(rèn)的是 org.seasar.framework.container.autoregister.DefaultAutoNaming類的實例。

方法 說明
addReferenceClass 以這個方法所指定的類所存在的路徑或者Jar文件為基點對類進(jìn)行檢索。
addClassPattern 將想要自動注冊的類模式注冊。最開始的一個參數(shù)是組件所在包的名字。子包也能被以回歸的方式進(jìn)行檢索。第二個參數(shù)是類的名字??梢允褂谜齽t表達(dá)式。也可以用“,”分隔做復(fù)數(shù)個設(shè)定。
addIgnoreClassPattern 將不想 自動注冊的類模式注冊。最開始的一個參數(shù)是組件所在包的名字。子包也能被以回歸的方式進(jìn)行檢索。第二個參數(shù)是類的名字??梢允褂谜齽t表達(dá)式。也可以用“,”分隔做復(fù)數(shù)個設(shè)定。

AutoNaming

根據(jù)AutoNaming來控制組件名稱。

org.seasar.framework.container.autoregister.DefaultAutoNaming

從類的完整合法名稱中將類的包的那部分名稱去掉,如果結(jié)尾是Impl或者Bean也要去掉,之后將開頭的字母變成小寫做為組件名稱來設(shè)定。 例如,aaa.HogeImpl類的情況下,組件的名稱就成了hoge。

屬性 說明
decapitalize 組件名的開頭字母為小寫的情況下指定為true。默認(rèn)值是true。

方法 說明
setCustomizedName 不依從于默認(rèn)的規(guī)則對類進(jìn)行注冊。第一個參數(shù)是類的完整合法名。第二個參數(shù)是組件的名稱。
addIgnoreClassSuffix 指定從類名的尾端消除的部分。注冊默認(rèn)值為Impl以及Bean。
addReplaceRule 根據(jù)正則表達(dá)式追加替換規(guī)則。第一個參數(shù)為正則表達(dá)式。第二個參數(shù)為向要替換的字符串。
clearReplaceRule 用setCustomizedName、addIgnoreClassSuffix、addReplaceRule將注冊的變換規(guī)則清零。作為默認(rèn)值被注冊的Impl和Bean也被清零。
org.seasar.framework.container.autoregister.QualifiedAutoNaming

將包的名字或者是一部分類的合法名做為組件名稱的設(shè)定。從類的完整合法名的最后把Impl或者Bean去掉,開頭字母小寫,分隔點后緊接著的字母變成大寫并取掉分隔點,將這個新的單詞設(shè)定為組件的名稱。
可以將包的開頭的不要的部分做消除指定。
例如,aaa.bbb.ccc.ddd.HogeImpl類的情況下,將開頭的aaa.bbb做消除指定的情況下組件的名稱為,cccDddHogeになります。

屬性 說明
decapitalize 組件名的開頭字母為小寫的情況下指定為true。默認(rèn)值是true。

方法 說明
setCustomizedName 遵從默認(rèn)的規(guī)則來注冊類。第一個參數(shù)是類的完整合法名。 第二個參數(shù)是組件的名稱。
addIgnorePackagePrefix 從包名稱的開頭開始指定消除的部分。
addIgnoreClassSuffix 類名稱的最末尾開始指定消除的部分。默認(rèn)地將Impl和Bean注冊。
addReplaceRule 根據(jù)正則表達(dá)式追加替換規(guī)則。第一個參數(shù)為正則表達(dá)式。第二個參數(shù)是替換的新字符串。
clearReplaceRule 將setCustomizedName、 addIgnorePackagePrefix、 addIgnoreClassSuffix、 addReplaceRule注冊的替換規(guī)則清除。默認(rèn)注冊的Impl以及Bean也將被清除。
<component
  class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
    <property name="autoNaming">
        <component class="org.seasar.framework.container.autoregister.DefaultAutoNaming">
            <initMethod name="setCustomizedName">
                <arg>"examples.di.impl.HogeImpl"</arg>
                <arg>"hoge2"</arg>
            </initMethod>
        </component>
    </property>
    <initMethod name="addClassPattern">
        <arg>"examples.di.impl"</arg>
        <arg>".*Impl"</arg>
    </initMethod>
</component>
<component class="org.seasar.framework.container.autoregister.JarComponentAutoRegister">
    <property name="referenceClass">
        @junit.framework.TestSuite@class
    </property>
    <property name="jarFileNames">"junit.*"</property>
    <initMethod name="addClassPattern">
        <arg>"junit.framework"</arg>
        <arg>"TestSuite"</arg>
    </initMethod>
</component>
<component class="org.seasar.framework.container.autoregister.ComponentAutoRegister">
    <initMethod name="addReferenceClass">
        <arg>@aaa.bbb.ccc.ddd.HogeImpl@class</arg>
    </initMethod>
    <initMethod name="addClassPattern">
        <arg>"aaa.bbb"</arg>
        <arg>".*Impl"</arg>
    </initMethod>
</component>

AOP的自動注冊

根據(jù)組件的自動注冊規(guī)則,組件的注冊可以做到自動化。進(jìn)一步,AOP的注冊也可以做到自動化,這就是AOP的自動注冊機能。

和組件的自動注冊功能組和使用的場合下,必須在組件的自動注冊設(shè)定之后,作AOP的自動注冊的設(shè)定。對于適用于使用AOP的組件的記述,必須在AOP的自動注冊設(shè)定之后進(jìn)行。

<components>
    <!-- 1.組件的自動注冊 -->
    <component class="org.seasar.framework.container.autoregister.ComponentAutoRegister">
        ...
    </component>

    <!-- 2.AOP的自動注冊 -->
    <component class="org.seasar.framework.container.autoregister.AspectAutoRegister">
        ...
    </component>

    <!-- 3.其它的組件 -->
    <component class="...">
        ...
    </component>
    ...
<components>
org.seasar.framework.container.autoregister.AspectAutoRegister

通過指定類名的模式來進(jìn)行AOP的自動注冊的組件。

屬性 說明
interceptor 指定interceptor。想要指定復(fù)數(shù)個interceptor的場合下,請使用InterceptorChain。
pointcut 適于使用interceptor的方法用逗號分隔開進(jìn)行指定。不指定pointcut的情況下,實裝組件的interface的所有方法都做為interceptor的對象。對于方法名稱也可以使用正則表達(dá)式(JDK1.4のregex)來指定。

方法 說明
addClassPattern 將想要自動注冊的類的模式注冊。第一個參數(shù)是組件的包的名。子包也可以用回歸的方法檢索。第二個參數(shù)是類名??梢允褂谜齽t表達(dá)式。用“,”分隔可以做復(fù)數(shù)個記述。
addIgnoreClassPattern 將不想自動注冊的類模式注冊。第一個參數(shù)是組件的包的名。子包也可以用回歸的方法檢索。第二個參數(shù)是類名??梢允褂谜齽t表達(dá)式。用“,”分隔可以做復(fù)數(shù)個記述。

<include path="aop.dicon"/>
...
<component
class="org.seasar.framework.container.autoregister.AspectAutoRegister">
<property name="interceptor">aop.traceInterceptor</property>
<initMethod name="addClassPattern">
<arg>"examples.di.impl"</arg>
<arg>".*Impl"</arg>
</initMethod>
</component>
org.seasar.framework.container.autoregister.InterfaceAspectAutoRegister

針對某個interface的實裝類進(jìn)行AOP的自動注冊的組件。

屬性 說明
interceptor 指定interceptor。想要指定復(fù)數(shù)個interceptor的場合下,請使用InterceptorChain。
targetInterface 針對某一指定的interface的實裝組件,使用AOP。
<include path="aop.dicon"/>
...
<component
class="org.seasar.framework.container.autoregister.InterfaceAspectAutoRegister">
<property name="interceptor">aop.traceInterceptor</property> <property name="targetInterface">@examples.Greeing@class</property>
</component>

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多