2012-06-28 117 views
0

我在我的項目中使用Spring方法攔截器。我想知道引入方法攔截器是否會有可能的性能問題。同時,我的理解是,Spring將創建代理並重新定義截獲的方法,並在每個攔截的方法中內聯攔截器邏輯。在運行時,sp​​ring不是調用bean,而是使用代理bean。所以使用攔截器時,需要額外的時間來創建代理bean本身。即使添加了更多的攔截器,也可以在同一個代理bean的方法中添加更多的方法調用。這種理解是否正確?Spring方法攔截 - 性能

回答

0

@LearningHuman或許這個術語有點混淆,攔截器更像是一個Spring MVC術語,指的是在實際控制器方法被調用之前想要採取的動作 - 這裏存在性能損失,但傾向於與涉及將數據流式傳輸回瀏覽器的IO成本相比,數據庫往返時間可以忽略不計。

我認爲你指的是Aspects,Spring爲每個有針對性的切入點的bean創建一個動態代理,但在創建代理的情況下,它並不真正對調用進行內聯,所以有一個懲罰,但如果是在Web應用程序環境中,則IO時間可能會高於其他方法調用的任何處罰。 如果性能是一個問題,您可以使用編譯時與Aspects進行編織,這可以至少內聯對建議的調用。