Является ли @Produces более эффективным, чем геттер в выражении EL - PullRequest
0 голосов
/ 21 декабря 2011

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


Первый

В userSearch.xhtml:

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

In UserSearchAction.java:

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

Второй

In userSearch.xhtml:

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

InUserSearchAction.java:

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

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

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

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

1 Ответ

1 голос
/ 23 декабря 2011

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

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

...