我在做使用Spring 3.1.0.RELEASE,JSF 2.x中,JPA 2与Hibernate提供的Web应用程序。 我使用友好的URL PrettyFaces 3.3.2。 在Tomcat 6.35运行应用程序。
我想用JSF ViewScope所以我决定追随在网络上找到的实现: http://comdynamics.net/blog/109/spring3-jsf2-view-scope/
public class ViewScope implements Scope {
private static final Logger logger = LoggerFactory.getLogger(ViewScope.class);
@Override
public Object get(String name, ObjectFactory objectFactory) {
final Map<String, Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap();
Object instance = viewMap.get(name);
if (instance == null) {
instance = objectFactory.getObject();
viewMap.put(name, instance);
}
return instance;
}
@Override
public Object remove(String name) {
logger.debug("ViewScope::remove {}", name);
return FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove(name);
}
@Override
public String getConversationId() {
return null;
}
@Override
public void registerDestructionCallback(String name, Runnable callback) {
//Not supported
}
@Override
public Object resolveContextualObject(String key) {
return null;
}
}
我注意到, @PreDestroy
不叫上他们喜欢表演这个问题@PreDestroy从不叫上@ViewScoped 。
这是否意味着托管豆ViewScope永远不会破坏? 其行为对内存泄漏。 我们应该利用这个范围呢?
这只是自定义Viewscope发生在春季或也钻嘴鱼科?
谢谢。