[Seasar-user:8129] Re: S2Container とTeedaのバージョンを変更するとInterceptorにDIされません

Ito Yoshiichi [E-MAIL ADDRESS DELETED]
2007年 6月 6日 (水) 21:43:06 JST


こんにちは。
GLAD!! こと伊藤です。

> -----Original Message-----
> Subject: [Seasar-user:8124] Re: S2Container とTeedaのバージョンを変更す
> るとInterceptorにDIされません
>
> ひがです。
>
> > 竹内と申します。

(中略)

> > 自分は今のところ、以下のようにinvoke()の頭で毎回コンテナから
> > 取得しするという形で対応しています。
> > LoginUserDto loginUserDto = (LoginUserDto) SingletonS2ContainerFactory
> >     .getContainer().getComponent(LoginUserDto.class);
> >
> > もし、Seasar的にもっとスマートな方法があれば自分も知りたい
> > ところですのでご教授ください。
> >
> 私は、Interceptorでセッションやリクエストスコープの
> コンポーネントを取得したいときは、
> SingletonS2ContainerFactory.getContainer().getComponent()
> をつかっちゃえ派です。

ささやかなこだわりなのですが...
S2Container を DI して getComponent() するのが
スマートかなと僕は思います。

  private S2Container container;
  public void setContainer(S2Container conatiner) {
    this.container = container;
  }
  public Object invoke(...) {
    LoginUserDto loginUserDto = (LoginUserDto)
        container.getComponent(LoginUserDto.class);
  }

ただし、取得できるのは同じ .dicon か include している .dicon
に登録されたコンポーネントだけですが。





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