强制Spring MVC控制器到请求范围

时间:2015-11-16 10:23:37

标签: spring spring-mvc

Spring的默认范围是singleton。但是,对于运行以提供Web请求的MVC控制器,并且在我的项目中,可能包含@Autowired原型bean,我想强制它们默认为至少request - 作用域,如果不是原型,没有使用@Scope

注释每个控制器

你认为有可能吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:1)

组合注释可能非常合适。

@Target(TYPE)
@Retention(RUNTIME)
@Documented
@Controller
@Scope(WebApplicationContext.SCOPE_REQUEST)
public @interface RequestScopedController { ... }

控制器将使用@RequestScopedController注释而不是@Controller

答案 1 :(得分:1)

您应该在您的bean(而不是控制器)上添加@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS),这些bean将自动连接到您的控制器中。通过这种方式,您可以通知spring在您的autowired bean周围创建代理 - 因此可以在单例类中使用它。