[Seasar-user:14415] [S2Container] インタフェースと実装クラス間の命名規則について
Kuraaku Kenta
[E-MAIL ADDRESS DELETED]
2008年 5月 23日 (金) 16:46:24 JST
いつもお世話になっております。kentaと申します。
### 前提 ###
s2-container 2.4.25
sa-struts-1.0.2-rc3
下記のインタフェースと、2つの実装クラスを定義しております。
#インタフェース#
public interface HogeService {
public void hoge();
}
#実装クラス1#
public class HogeServiceImpl implements HogeService {
public int hoge(){
System.out.println("hoge");
}
}
#実装クラス2#
public class Hoge2ServiceImpl implements HogeService {
public int hoge(){
System.out.println("hoge2 hoge2");
}
}
バインディングの設定は何もしていない(デフォルトはorg.seasar.framework.container.autoregister.DefaultAutoNaming?)
### 前提ここまで ###
いま、アクションクラスにpublicなフィールドとして
public HogeService hoge2Service;
を宣言し、実行メソッドにて、hoge2Service.hoge() を記述すると、Hoge2ServiceImpl ではなく、HogeServiceImplのメソッドが呼ばれてしまいます。
また、HogeServiceImpl のクラス名を MogeServiceImpl (Hoge→Moge)
と変えて実行すると
java.lang.ClassNotFoundException が発生します。
org.seasar.framework.util.ClassUtil.forName() が原因のようですが、任意の実装クラス(上記の場合はHoge2ServiceImpl)を注入するにはどのようにすれば良いのでしょうか?
---------------------------------
GANBARE! NIPPON! Win your ticket to Olympic Games 2008.
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20080523/fdbe2472/attachment-0001.html>
Seasar-user メーリングリストの案内