Мой обработчик JSF определен в области запроса следующим образом
public class JsfHandler {
private List<ManagedBean> managedBeanList; // managed bean List in session scope
}
<managed-bean>
<managed-bean-name>jsfHandler</managed-bean-name>
<managed-bean-class>com.test.JsfHandler</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>managedBeanList</property-name>
<value>#{managedBeanList}</value>
</managed-property>
</managed-bean>
У меня есть список управляемых bean-компонентов JSF в JSF, определенный следующим образом.
<managed-bean>
<managed-bean-name>managedBeanList</managed-bean-name>
<managed-bean-class>java.util.ArrayList</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Подход 1:
managedBeanList.clear();
managedBeanList.addAll(service.getResultList());
// assuming service.getResultList() would return a new ArrayList();
Подход 2:
managedBeanList = service.getResultList();
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("managedBeanList",managedBeanList);
В настоящее время мы используем подход 1.
Правильный ли подход 2? Есть ли какое-то преимущество с точки зрения использования памяти, когда сборщик Java Garabage вызывается в appraoch 2.