[Seasar-user:20557] Re: 複数の永続ユニット使用について
oh
[E-MAIL ADDRESS DELETED]
2011年 2月 6日 (日) 21:40:44 JST
長谷川です。
またわかりにくい記述をしてしまいましたので追記を。
s2junit4.dicon にて
<component name="da1" class="org.seasar.framework.unit.impl.DataAccessorImpl">
<property name="entityManager">sc01EntityManager</property>
</component>
<component name="da2" class="org.seasar.framework.unit.impl.DataAccessorImpl">
<property name="entityManager">sc02EntityManager</property>
</component>
のように2つの DataAccessro を別名にて定義したのですが、これをテストクラスの
DataAccessor フィールドに明示的にバインドする方法がわかりません。
@RunWith(Seasar2.class)
public class Sc1ServiceTest {
@Binding("da1")
private DataAccessor da;
と Binding アノテーションで指定しただけでは、TooManyRegistrationRuntimeException
が発生します。
On Sun, 06 Feb 2011 21:17:08 +0900
oh <[E-MAIL ADDRESS DELETED]> wrote:
>
> 実際には、sc01 sc02 の複数の EntityManager を使用する形
> なのですが、s2junit4.dicon で複数指定(name は異なる)した
> 場合、インジェクションされる側にはどのように明示すれば
> よいのでしょうか。
>
現状では、s2junit4.dicon 側では sc01 側の EntityManager を使用する
DataAccessor を一つだけ定義して、sc02 側を使用するモジュールのテストでは
private DataAccessor da;
private Sc2Service service;
private S2Container container;
@PostBindFields
public void setup() {
DataAccessorImpl da2 = (DataAccessorImpl) da;
da2.setEntityManager((EntityManager) container
.getComponent("sc02EntityManager"));
}
と明示的に EntityManager を再設定して、動作自体は確認しています。
ただ、もし可能であれば DI してもらう方が気持ちがいいので
以上、よろしくお願いいたします。
--
_/_/
_/_/ mailto: [E-MAIL ADDRESS DELETED]
_/_/
Seasar-user メーリングリストの案内