首页 > 代码库 > Spring -Bean的作用域

Spring -Bean的作用域

在 Spring 中, 可以在 <bean> 元素的 scope 属性里设置 Bean 的作用域.

默认情况下 bean 是单例的
但有的时候, bean 就不能使单例的. 例如: Struts2 的 Action 就不是单例的! 可以通过 scope 属性来指定 bean 的作用域 
  prototype: 原型的. 每次调用 getBean 方法都会返回一个新的 bean. 且在第一次调用 getBean 方法时才创建实例
  singleton: 单例的. 每次调用 getBean 方法都会返回同一个 bean. 且在 IOC 容器初始化时即创建 bean 的实例. 默认值
  Request:每一次HTTP请求都会产生一个新的Bean实例

  Session:同一个HttpSession公用一个Bean实例,不同的HttpSession使用不同的Bean

    <bean id="dao2" class="com.atguigu.spring.ref.Dao" scope="prototype"></bean>

ps::默认情况下, Spring 只为每个在 IOC 容器里声明的 Bean 创建唯一一个实例, 整个 IOC 容器范围内都能共享该实例:所有后续的 getBean() 调用和 Bean 引用都将返回这个唯一的 Bean 实例.该作用域被称为 singleton(单实例), 它是所有 Bean 的默认作用域.

 

Spring -Bean的作用域