0

次のようなコードがあります。

MyContext context = new MyContext();
context.start();
MyEntity entity =  context.getEntity();

MyEntity インスタンスをさまざまなクラスに注入したいと考えています。しかし、最初にオブジェクトを作成し、次にそのメソッドを呼び出し、最後に注入したいエンティティを返す別のメソッドを呼び出すSpring構成をセットアップする方法がわかりません。

EDIT 2 - 文字列を完全に削除

4

1 に答える 1

2

Springを使用して注入される最も一般的なタイプの依存関係は、それらの構築に対するユーザー入力に依存しません。これには、データアクセスオブジェクト、サービスなどが含まれます。

直接または間接的にユーザー入力に依存する構造のドメインオブジェクトを注入することについて話しています。

Springは、演算子@Configurableを使用して作成されたそのようなドメインオブジェクトを挿入するためのアノテーションを提供します。newインターネットで「@ConfigurableDomainDrivenDesign」を検索して、これを実装する方法の例を入手できます。私自身、自分のアプリケーションの1つでそれを使用し、始めるのに役立つかもしれない簡単な投稿をここに書きました。

編集

更新された質問の仕様に従ってタイプMyEntityのBeanを作成するには、次のことを行う必要があります。

  • MyContextタイプのBeanを定義します
  • MyContextBeanに依存するMyEntityFactoryクラスを作成します。
  • ファクトリメソッドは、MyContext Beanを引数として受け取り、それを呼び出しcontext.start()て、MyEntityのインスタンスを返します。
  • このファクトリクラスを使用してMyEntityBeanを定義します。

MyEntityFactoryクラスは次のようになります。

public class MyEntityFactory
{
    public static MyEntity getMyEntity(MyContext context)
    {
        context.start();
        return context.getEntity();
    }
}

春の豆の構成は次のようになります。

<bean id="myContext" class="FQCN.Of.MyContext" />
<bean id="myEntity" class="FQCN.Of.MyEntityFactory" factory-method="getMyEntity">
    <constructor-arg ref="myContext" />
</bean>

はシングルトンBeanであるためMyEntity、ファクトリメソッドは1回だけ呼び出されます。

ファクトリメソッドを使用したBeanの作成について詳しくは、こちらをご覧ください。

于 2012-12-01T16:50:18.640 に答える