0

in seam @Role アノテーションを使用すると、別のスコープを持つコンポーネントの追加の名前付きロールを定義できます — 同じコンポーネント クラスを別のコンテキスト変数にバインドできます。(任意の Seam コンポーネント インスタンスは複数のコンテキスト変数にバインドできますが、これによりクラス レベルでバインドでき、自動インスタンス化を利用できます。)

@Name("user")
@Entity
@Scope(CONVERSATION)
@Roles({@Role(name="currentUser", scope=SESSION),
        @Role(name="tempUser", scope=EVENT)})
public class User { 

    ... 

}

春はどうですか?

4

2 に答える 2

1

Springでこれを行うためのすぐに使える方法はありません。

XMLまたはJavaConfigを使用して、同じBeanタイプを複数のスコープにワイヤリングできますが、Beanクラス内からはワイヤリングできません。そして:私もその必要性を見ていません。異なるスコープで同じBeanクラスを使用している場合は、アーキテクチャに問題がある可能性があります。

考えられる解決策の1つ:

データを保持する抽象クラスと、スコープごとに1つずつ、Springアノテーションを含む2つのサブクラスを定義します。

public abstract class User{
   // fields, getters , setters
}

@Component @Scope("session")
public class SessionUser extends User{}

@Component @Scope("request")
public class TempUser extends User{}
于 2012-04-21T15:53:52.837 に答える
0

私はJavaConfigを使用しました:

@Bean
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public EntityService requestScopedEntityService() {
    return new EntityService();
}

@Bean
@Scope(value = "prototype")
public EntityService prototypeScopedEntityService() {
    return new EntityService();
}
于 2012-08-30T12:50:09.657 に答える