2009-11-26 94 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