浏览代码

jfinal 3.7

James 6 年之前
父节点
当前提交
d49849e733

+ 1 - 3
src/main/java/com/jfinal/core/ActionHandler.java

@@ -121,9 +121,7 @@ public class ActionHandler extends Handler {
 			}
 			renderManager.getRenderFactory().getErrorRender(500).setContext(request, response, action.getViewPath()).render();
 		} finally {
-			if (controller != null) {
-				controller._clear_();
-			}
+			controllerFactory.recycle(controller);
 		}
 	}
 	

+ 15 - 0
src/main/java/com/jfinal/core/ControllerFactory.java

@@ -20,9 +20,24 @@ package com.jfinal.core;
  * ControllerFactory
  */
 public class ControllerFactory {
+	
 	public Controller getController(Class<? extends Controller> controllerClass) throws ReflectiveOperationException {
 		return controllerClass.newInstance();
 	}
+	
+	/**
+	 * 回收利用 Controller,参考 FastControllerFactory,大致步骤如下:
+	 * 
+	 * 1:在控制器中覆盖 Controller 的 _clear_() 方法,先清除自身状态,再调用
+	 *    super._clear_() 清除父类状态
+	 * 
+	 * 2:继承 ControllerFactory 并覆盖其中的 recycle() 方法,调用 controller._clear_()
+	 * 
+	 * 3:配置实现类:me.setControllerFactory(...)
+	 */
+	public void recycle(Controller controller) {
+		
+	}
 }
 
 

+ 9 - 0
src/main/java/com/jfinal/core/FastControllerFactory.java

@@ -53,6 +53,15 @@ public class FastControllerFactory extends ControllerFactory {
 		}
 		return ret;
 	}
+	
+	/**
+	 * 清除 controller 状态,回收利用
+	 */
+	public void recycle(Controller controller) {
+		if (controller != null) {
+			controller._clear_();
+		}
+	}
 }