Является ли @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 ответ
Это зависит от того, как ваш производитель определяет, что производится. Если он зависит от области видимости (то есть у вас нет ни области действия, ни класса, в котором он содержится), он в конечном итоге остается тем же, возможно, в меньшей степени в зависимости от того, что вы должны делать внутри этого метода.
В вашем примере это должно быть более эффективным, потому что этот метод источника должен вызываться только один раз (для каждого запроса).