spring所建立的bean的做用域

    spring 模式上的做用域有两种前端

    singleton :一个 Spring容器 中只存在公用一个实例。java

    prototype : 在spring容器中,每次都产生一个新的实例。web

    值得注意的是,我上面所提到的 “spring容器” 这个单位,每一个配置文件都至关因而一个spring容器,在不一样的spring容器中即便是 singleton 也是会产生多个实例,可是一个容器中始终都是只有一个实例(实例的是singleton 做用域的状况下)。spring

    控制做用的方法有两种服务器

<!-- 第一种方法在配置文件上 使用  scope="prototype" 声明这个类是  prototype做用域 -->
<!--默认状况是 singleton 做用域  -->
<bean id="user" class="controller.UserController" scope="prototype">
	<property name="userService" ref="userService"></property>
</bean>
package controller;

import org.springframework.context.annotation.Scope;

import service.UserSerivce;
/**
 * 第二种方法 使用 @Scope 注解,使用 prototype 参数声明这个类的做用域的范围是 prototype
 * 默认状况下是 singleton 的 
 */
@Scope("prototype")
public class UserController {
	
	public UserSerivce userService;

	public void setUserService(UserSerivce userService) {
		this.userService = userService;
	}
	
}

如何选择Bean的做用域session

    若是一个bean不会保持任何回话状态(也就是说,他是无状态的),那么应该将他的做用于定义为singleton 。例如咱们的controller,service,dao本质上都是无状态的。若是这个有会话状态的话,应该设置成 prototype 做用域,例如咱们在使用 struts2 框架式的 action类,使用对象接受前端传递的值,保留有会话信息,应该将其设置成 prototype  做用域。app

    上面是将的 spring 中所提出的,做用域,在咱们的 web 服务器中同样有做用域,而咱们的 spring 框架同样能够管理。框架

    request : 一次请求做用域this

    session:一次会话做用域prototype

    application :一个服务器做用域

     global session: global session做用域相似于标准的HTTP Session做用域,不过它仅仅在基于portlet的web应用中才有意义。

    上述所说的,做用域也至关因而 一个实例的生命周期。

相关文章
相关标签/搜索