Является ли @Produces более эффективным, что геттер в выражении EL

Мне интересно, какой из этих двух фрагментов кода более эффективен.


Первый

В userSearch.xhtml:

<rich:dataTable
    var="user"
    value="#{userSearchResultList}"
    rendered="#{not empty userSearchResultList}">
...
</rich:dataTable>

В UserSearchAction.java:

@Produces @RequestScoped
@Named("userSearchResultList")
public List<User> getResultList() {
    return resultList;
}

Второй

В userSearch.xhtml:

<rich:dataTable
    var="user"
    value="#{userSearchAction.resultList}"
    rendered="#{not empty userSearchAction.resultList}">
...
</rich:dataTable>

В UserSearchAction.java:

public List<User> getResultList() {
    return resultList;
}

В обоих решениях моя переменная resultList заполняется методом UserSearchAction.search().

Я использую JBoss 7.0.2.Final и RichFaces 4.1.0.Final.

В более общем плане, я хотел знать, лучше ли писать производителей, чем вызывать под-свойства некоторых классов в файлах JSF.

Ответы

Ответ 1

Это зависит от того, как ваш производитель определяет, что производится. Если он зависит от области видимости (что означает, что у вас нет области видимости на ней, ни на классе -содержании), она становится тем же самым, возможно, менее зависимым от того, что вам нужно делать внутри этого метода.

В вашем примере это должно быть более эффективным, потому что этот метод производителя следует вызывать только один раз (для каждого запроса).