[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 メーリングリストの案内