2012-02-15 10 views
0

以下のコードがあります。工場から別のオブジェクトを取得する私のBeanの

私が望むもの:毎回工場を新しいランダムな人物リストと呼ぶときに、私はいつも欲しいです。

私が得るもの:私はいつも同じ人物リストを取得します。明らかに理由は、ファクトリメソッドは、現在のオブジェクトがヌルである場合、すなわち最初のファクトリコールでのみ新しいオブジェクトを作成するということである。

コードを変更する必要があり、毎回新しいオブジェクトを取得する必要がありますか?

ありがとうございました!

@Logger     private Log log; 
@In      private EntityManager entityManager; 
@In      private LocaleSelector localeSelector; 

@Factory("personList") 
public List<Person> createPersonList() { 
    log.info("Creating Person List."); 

    return entityManager.createQuery(
    "SELECT p FROM Person p ORDER by random()") 
    .setMaxResults(3) 
    .getResultList(); 
} 

答えて

1

あなたはMETHODスコープを使用することができます。

@Factory(value="personList", scope=ScopeType.METHOD) 
public List<Person> createPersonList() { 

技術的には、METHODの範囲はいえ、内部使用のために意図されているので、各HTTPリクエストのための新しいリストが受け入れ可能であるならば、私が使用したいですScopeType.EVENT

関連する問題