2012-02-15 43 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

你可以使用的方法范围:

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

技术上,方法的范围是指供内部使用,虽然如此,如果每个HTTP请求一个新的列表是可以接受的,我会使用ScopeType.EVENT