4
的文檔是不是對這個很清楚@After和@Finally註釋之間的差異。有人可以闡明這兩者之間的差異嗎?什麼是對遊戲控制器
@After
- 與@After註解的方法每個動作呼籲該控制器之後執行。
@Finally
- 方法與@Finally註解的每個操作的結果從該控制器施加之後被執行。
會疼性能@Finally使用時@After會的工作?
的文檔是不是對這個很清楚@After和@Finally註釋之間的差異。有人可以闡明這兩者之間的差異嗎?什麼是對遊戲控制器
@After
- 與@After註解的方法每個動作呼籲該控制器之後執行。
@Finally
- 方法與@Finally註解的每個操作的結果從該控制器施加之後被執行。
會疼性能@Finally使用時@After會的工作?
如果你寫一個小的測試工具,你會看到這是如何工作的,但問題的癥結所在是這
執行你行動之前
@After @Before被稱爲是所謂後您的控制器完成其執行,但在此之前的輸出呈現給瀏覽器
當結果已經發布到瀏覽器@Finally被調用。
所以在大多數情況下,@After和@Finally會爲你以同樣的方式工作,但也有細微的差別,這取決於你的具體使用情況。但是,它對性能應該沒有任何影響。
測試工具,我寫來證明這一點,如下所示
public class Application extends Controller {
@Before
static void log0() {Logger.info("before: "+ response.out.size());}
@After
static void log1() {Logger.info("After: "+ response.out.size());}
@Finally
static void log2() {Logger.info("finally: "+ response.out.size());}
public static void index() {
Logger.info("in index action");
render();
}
}
我得到的輸出如下
20:51:37,741 INFO ~ before: 0
20:51:37,742 INFO ~ in index action
20:51:38,083 INFO ~ After: 0
20:51:38,106 INFO ~ finally: 706
清楚地顯示處理的順序,以及數據被輸出到HTTP響應對象。
你的行爲可能會有所不同... @最後的方法被調用遲於@After方法做,這可能會影響這些方法的行爲。 – 2010-11-03 19:59:55