[Seasar-user:2167] Re: injectDependencyについて

Koichi Kobayashi koichik
2005年 6月 10日 (金) 02:46:17 JST


小林 (koichik) です.

On Fri, 10 Jun 2005 02:30:21 +0900
Koichi Kobayashi <[E-MAIL ADDRESS DELETED]> wrote:

> そんなわけで (どんなわけで?),S2ContainerBehavior というのを
> でっちあげてみました (ソースを添付してます).

これによって昨夜の [Seasar-user:2153] がどうなったかをお見せします.

今回はカスタムなコンテナではなくカスタムな S2ContainerBehavior を作成.
----------------------------------------------------------------------
public class MyContainerBehavior extends S2ContainerBehavior.DefaultProvider {
    public ComponentDef acquireFromInjectDependency(S2Container container, Object key) {
        ComponentDef cd = getComponentDef(container, key);
        if (cd == null && key instanceof Class) {
            cd = new ComponentDefImpl((Class) key);
            cd.setContainer(container);
            cd.setInstanceMode(ContainerConstants.INSTANCE_OUTER);
            cd.init();
        }
        return cd;
    }
}
----------------------------------------------------------------------
# 昨夜のと違って,TooMany の時は例外になりますが,そこは主題じゃないので...

そして s2containerbuilder.dicon 改め 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>
    <component class="custom.MyContainerBehavior"/>
</components>
----------------------------------------------------------------------

随分すっきりしましたね.


-- 
<signature>
    <name>Koichi Kobayashi</name>
    <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




Seasar-user メーリングリストの案内