Bean scopes(作用域):
①singleton(单例):当一个bean的作用域为singleton,那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。这是默认的作用域。
②Prototype(原型)作用域的bean会导致在每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例。
*。对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个prototype bean的整个生命周期负责:容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。
*.根据经验,对有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域。
③request请求、session会话、global session全局会话
仅在web应用中使用,一般用得很少,可以忽略。或查阅参考文档3.4.4
情景:接昨天所学,spring准备将一个参考UserDAOImpl实现的UserDAO实例userDAO注入到UserService的实例userService中去
<bean name="u"
class="com.bjsxt.dao.impl.UserDAOImpl">
</bean>
<bean id="userService"
class="com.bjsxt.service.UserService" scope="prototype">
<property name="userDAO" ref="u" />
</bean>
【JUNIT测试代码段:】
UserService service1 =
(UserService)ctx.getBean("userService");
UserService service2 =
(UserService)ctx.getBean("userService");
System.out.println(service1 == service2);
∴控制台输出的结果是false。因为不是同一个对象。
如果:
<bean name="u"
class="com.bjsxt.dao.impl.UserDAOImpl">
</bean>
<bean id="userService"
class="com.bjsxt.service.UserService" scope="singleton">
<property name="userDAO" ref="u" />
</bean>
∴控制台输出的结果是true。因为都是同一个对象。
⊙_⊙最后,按照我的惯例,附上本次的项目源码(来自尚学堂马士兵的源码),类库用到三个(spring.jar junit.jar(eclipse自带) commons-logging.jar,缺少类库可以到http://moshowgame.iteye.com/admin/blogs/1606825下)。
^_^还有什么好方法或者疑问和意见欢迎大家提出来一起讨论!
- 大小: 69.5 KB
- 大小: 69.5 KB
分享到:
相关推荐
在Spring框架中,Bean的Scope是管理对象生命周期和作用域的关键概念。Bean的Scope定义了在应用程序上下文中如何创建和管理Bean的实例。本示例着重于两种主要的Bean Scope:单例(Singleton)和原型(Prototype),并...
4. **Bean的作用域(Scopes)** - Spring提供了多种Bean的作用域,包括单例(Singleton)、原型(Prototype)、请求(Request)、会话(Session)和全局会话(Global Session)。这些作用域决定了Bean的实例化策略...
Bean定义描述了Bean的元数据,包括Bean的类、作用域、初始化方法等,是Spring IoC容器管理Bean的基础。 #### Spring Bean Scopes Bean的作用域决定了Bean的生存周期,Spring支持多种作用域,如singleton、...
2. **bean的作用域(Bean Scopes)** - **2.1 Singleton**:每个bean定义只有一个实例,全局共享。 - **2.2 Prototype**:每个请求(或配置)都会创建一个新的bean实例。 - **2.3 Request**:在Web应用中,每个...
- **New bean scopes**: 添加了新的作用域类型,如`request`、`session`等,用于更好地管理和控制Bean的生命周期。 - **Extensible XML authoring**: 允许用户通过自定义命名空间扩展Spring的配置文件结构,提供了更...
- **Other Scopes**:除了单一实例和原型模式外,Spring还支持会话作用域、请求作用域等多种其他作用域类型。 - **Custom Scopes**:开发者还可以根据实际需求自定义Bean的作用域。 ### 总结 Spring 2.0版本在原有...
- **3.5 Bean作用域** - **3.5.1 单例作用域** - 单例bean在整个Spring IoC容器中只有一个实例。 - **3.5.2 The prototype作用域** - 每次请求时都会创建一个新的bean实例。 - **3.5.3 Singleton beans with ...
- 新的Bean作用域(New bean scopes) Spring 2.5引入了更多的Bean作用域,如prototype(原型)和session,使得开发者可以更灵活地控制Bean的生命周期。 - 更简单的XML配置(Easier XML configuration) 2.5版本...
Spring定义了多种Bean的作用域,包括Singleton(单例)、Prototype(原型)、Request、Session、Global Session等。Singleton Bean在整个容器生命周期内只有一个实例,而Prototype Bean每次请求都会创建一个新的...
- **New bean scopes**:引入了新的bean作用域,如`request`和`session`等,这些作用域特别适用于Web应用中的特定场景。 - **Extensible XML authoring**:通过提供更多的自定义选项,Spring 2.0使得XML配置更加灵活...
- **Beans scopes**:解释了不同作用域下的Bean实例化行为。 - **Customizing the nature of a bean**:讲述了如何定制Bean的行为,如初始化、销毁方法等。 - **Bean definition inheritance**:说明了如何通过继承...
Spring Web Flow采用了一种层次化的范围搜索算法,当访问一个EL变量时,它会按照预定义的顺序在不同的作用域中查找该变量,确保了数据访问的正确性和高效性。 ### 五、Rendering views #### 5.1 Introduction 视图...
然后是**豆范围(Bean Scopes)**,Spring支持多种Bean的作用域,包括单例(Singleton)、原型(Prototype)、请求(Request)、会话(Session)等。理解不同作用域的含义和使用场景是确保应用程序正确运行的关键。...