spring的Scope
@Scope注解用于指定一个bean的作用域,即在什么范围内该bean是有效的。Spring提供了以下几种作用域:
- singleton:默认值,表示一个bean在整个应用中只有一个实例。
- prototype:每次请求时都会创建一个新的实例。
- request:每个HTTP请求都会创建一个新的实例,该实例仅在当前HTTP请求中有效。
- session:每个HTTP会话都会创建一个新的实例,该实例在整个会话期间有效。
- global session:仅在基于portlet的web应用中有效,表示每个portlet应用中的所有HTTP会话共享一个实例。
使用示例:
@Component
@Scope("prototype")
public class MyPrototypeBean {
// ...
}
@Component
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MySessionBean {
// ...
}
在上面的例子中,MyPrototypeBean的作用域被设置为prototype,因此每次请求该bean时都会创建一个新的实例。而MySessionBean的作用域被设置为session,表示该bean在整个HTTP会话期间有效。同时,为了防止在session作用域中使用非线程安全的成员变量,还可以使用proxyMode = ScopedProxyMode.TARGET_CLASS来创建一个代理类
原文地址: http://www.cveoy.top/t/topic/hv5f 著作权归作者所有。请勿转载和采集!