Tapestry3源码阅读笔记2:PageLoader/PageSource
之前提到Page类是缓存在Pool类里的。这里我们来看Page类的保存加载过程。
这里只看加载Page的loadPage方法,Page类的初始化就是从这个方法中出来的。这个方法里主要的代码如下:
IPage result = (IPage) _pool.retrieve(key);if (result == null){PageLoader loader = getPageLoader(cycle);try{result =loader.loadPage(pageSpecificationResolver.getSimplePageName(),pageSpecificationResolver.getNamespace(),cycle,pageSpecificationResolver.getSpecification());}finally{discardPageLoader(loader);discardPageSpecificationResolver(pageSpecificationResolver);}}else{// The page loader attaches the engine, but a page from// the pool needs to be explicitly attached.result.attach(engine);}?释放page是在releasePage方法内实现的。好简单。首先调用page的detach方法,然后将page放回到pool中。