Scope是spring中的一个注解,可以作为类注解,也可以作为方法注解,它有五个作用域,分别是singleton、prototype、request、session、global session,spring中的bean默认是使用singleton,即单例模式;下面就五种作用域做详细介绍;
1、@Scope(“singleton”)
spring中的bean默认使用方式,即单例模式,全局有且仅有一个实例;
2、@Scope(“prototype”)
每次获取bean时都会产生一个新的实例,注意是“获取”,而不是“使用”;
举个例子,在A类中注入B类的实例,在A类中多个地方使用实例B都是使用的同一个;
如果在C类中注入B的实例,那么在A类中和C类中使用的就是两个不同的B的实例;
3、@Scope(“request”)
request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,配置实例:
request、session、global session使用的时候首先要在初始化web的web.xml中做如下配置:
如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可:
<web-app>
...
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
...
</web-app>
4、@Scope(“session”)
session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效
5、@Scope(“global session”)