Spring的默认范围是singleton
。但是,对于运行以提供Web请求的MVC控制器,并且在我的项目中,可能包含@Autowired
原型bean,我想强制它们默认为至少request
- 作用域,如果不是原型,没有使用@Scope
你认为有可能吗?如果是这样,怎么样?
答案 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周围创建代理 - 因此可以在单例类中使用它。