Является ли @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 ответ

Решение

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

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

Другие вопросы по тегам