<bean id="meetAction" class="com.web.actions.MeetsAction"
scope="prototype">
<property name="meetsService" ref="meetsService" />
</bean>
<!--
scope="prototype"没写的问题,项目中对一个表的增删该操作是用一个action,这个action有add,update,delete,save这些方法,
添加和修改是共用一个页面,当页面得到id时代表进行的修改操作,反之是添加操作。因为在配置spring的bean是忘了写scope="prototype"
所以每次添加时都显示最后一次访问过的记录,scope="prototype" 会在该类型的对象被请求
时创建一个新的action对象。如果没有配置scope=prototype则添加的时候不会新建一个action,他任然会保留上次访问的过记录的信息
webwork的Action不是线程安全的,要求在多线程环境下必须是一个线程对应一个独立的实例,不能使用singleton。所以,我们在Spring配置Webwork Action Bean时,需要加上属性scope=”prototype”或singleton=”false”。
singleton模式指的是对某个对象的完全共享,包括代码空间和数据空间,说白了,如果一个类是singleton的,假如这个类有成员变量,那么这个成员变量的值是各个线程共享的(有点类似于static的样子了),当线程A往给变量赋了一个值以后,线程B就能读出这个值。因此,对于前台Action,肯定不能使用singleton的模式,必须是一个线程请求对应一个独立的实例。推而广之,只要是带数据成员变量的类,为了防止多个线程混用数据,就不能使用singleton。对于我们用到的Service、Dao,之所以用了singleton,就是因为他们没有用到数据成员变量,如果谁的Service需要数据成员变量,请设置singleton=false。
分享到:
相关推荐
在Spring框架中,`scope`是一个非常重要的概念,它决定了Bean的生命周期和实例化策略。在Spring中,Bean的scope主要有以下几种: 1. **singleton(单例)**:这是默认的scope,每个容器中只有一个实例。无论多少次...
总的来说,掌握Spring中的singleton和prototype两种作用域,能够帮助开发者更好地设计和实现面向服务的架构,提高代码的可重用性和可维护性。理解它们的差异,并根据具体需求选择合适的作用域,是每个Spring开发者...
总结起来,Spring中的`singleton`和`prototype`作用域是管理Bean生命周期的重要手段。`singleton`提供了单例模式的实现,确保了全局唯一性,适合状态不随时间改变的对象;`prototype`则支持按需创建新实例,适用于...
Spring IOC Bean标签属性介绍 0.Bean标签属性介绍 1.0 新建一个Maven工程 1.1 pom.xml 1.2 实体类JavaBean 1.2.1 User类 1.3 当Scope="singleton"时 1.4 当 Scope="singleton" 且 lazy-init="true" 时 1.5 当scope=...
在Spring框架中,Bean的两种主要作用域是Singleton和Prototype。Singleton Bean表示在整个Spring IoC容器中只有一个实例,而Prototype Bean则表示每次请求都会创建一个新的实例。这两种作用域的使用场景和实现方式都...
<bean id="role" class="spring.chapter2.maryGame.Role" singleton="true"/> ``` 需要注意的是,虽然`Singleton`作用域下的Bean在整个容器中是唯一的,但这并不意味着它是线程安全的。开发者需要确保Bean内部的...
Spring中的singleton和prototype的实现 Spring框架中,bean的作用域是指在容器中bean的实例化和生命周期管理。其中,singleton和prototype是两个最基本的bean作用域。本文将详细介绍Spring中的singleton和...
我的博客中“maven环境搭建及Spring入门”的...* 单例 scope=“singleton” * 原型 scope=“prototype” 5。bean的生命周期: 默认情况下IOC容器创建的时候就会自动创建所有对象,只支持懒加载。default-lazy-init=true
<bean id="role" class="spring.chapter2.maryGame.Role" singleton="true"/> ``` prototype 作用域 ----------------- prototype 作用域的 bean,每一次请求(将其注入到另一个 bean 中,或者以程序的方式调用容器...
- 配置Prototype Bean的例子是:`<bean id="role" class="spring.chapter2.maryGame.Role" scope="prototype"/>` 或 `<bean id="role" class="spring.chapter2.maryGame.Role" singleton="false"/>` 3. **Request...
在Spring框架中,`id`、`name`和`scope`是配置bean时常见的三个属性,它们对于理解和管理Bean的生命周期至关重要。今天我们将深入探讨这三个属性的含义、使用方法以及它们之间的顺序规则。 首先,`id`是Spring Bean...
@Scope 注解有五种类型:singleton(单例)、prototype(多例)、request(请求)、session(会话)和 globalsession(全局会话)。 @Scope 注解怎么使用? -------------------- @Scope 注解可以直接在 Bean 对象...
prototype:,设定创建出的对象保存在spring容器中,是一个非单例的对象 非单例的对象是在调用getBean()方法时才创建对象,在同一个bean获取的资源时,用getBean()方法得到的对象都不相同 request、session、...
然而,根据应用场景的不同,有时我们需要更灵活的管理方式,这时Spring提供了多种预定义的scope,如`prototype`、`request`、`session`、`application`和`websocket`等。 `prototype`作用域的Bean每次从容器中请求...
当设置`scope="singleton"`时,Spring容器会保证在整个应用中只有一个Bean实例。每次请求该Bean时,都会返回同一个实例。这种方式适用于无状态的Bean,例如服务层的业务对象。 2. **原型(Prototype)**:与单例...
或者:<bean id="role" class="spring.chapter2.maryGame.Role" singleton="true"/> Singleton 作用域和 GOF 设计模式中的单例是完全不同的,单例设计模式表示一个 ClassLoader 中只有一个 class 存在,而这里的 ...
例如,singleton Scope可以优化内存使用,而prototype Scope则提供了更大的灵活性。此外,Spring还提供了自定义Scope的机制,开发者可以根据需求定义自己的Bean作用域。 为了深入学习这个主题,可以参考提供的博文...
在【描述】中,提到了Bean的两种主要作用域:singleton和prototype,它们在不同的场景下有着重要的应用。 **Singleton作用域** Singleton是Spring容器的默认作用域,意味着无论何时,只要Spring容器需要该Bean,它...
对于Singleton和Prototype之外的Web范围,我们可以使用`<bean>`标签的`scope`属性结合`<aop:scoped-proxy/>`来实现。例如,创建一个Request范围的Bean: ```xml <bean id="requestScopedBean" class=...
<bean id="defaultPointcutAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor" scope="prototype"> <property name="pointcut" ref="fooPointcut"/> <property name="advice" ref=...