2009-11-26 46 views
0

是否有一種很好的方式讓Spring的@Controller類爲每個請求調用一次特定的方法?每個請求調用@Controller方法

現在我正在使用一個註釋爲@InitBinder的方法來實現此目的,但這並不理想,因爲每個請求都會調用@InitBinder多次。我只想做一些初始化/更新的東西在我的控制器中使用。

我在找的東西就像Rails的before_filter,但據我所知,在Spring中沒有這樣的功能。

回答

1

聽起來像你需要一個request-scoped controller bean。 Spring將爲每個請求創建一個新的控制器實例,並且每次使用標準機制(如@PostConstruct)來初始化bean。

+0

我已經想過這樣的解決方案,但我不想在每個請求上初始化我的控制器。我只想做一些小的清理任務(例如重置我的視圖中使用的一些屬性)。所以這將是可能的,但我希望有一個更乾淨的解決方案。 – Koraktor 2009-11-26 11:09:48

+0

彈簧控制器默認在線程和請求之間共享。如果您的控制器bean中有每個請求的狀態,那麼您不應該在請求之間共享它們,請求範圍的bean是處理這種情況的最乾淨和最安全的方式。 – skaffman 2009-11-26 11:12:58

+1

有沒有辦法將一個請求範圍的bean自動裝入單一作用域控制器? – Koraktor 2009-11-26 11:26:38