`

struts2.0中spring配置文件中action的属性 scope="prototype"

 
阅读更多
<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。

分享到:
评论
1 楼 letmedown 2012-12-18  
分析得很好,谢谢.

相关推荐

    (Struts2.0 and EJB)框架配置文件

    Struts2.0的核心配置文件是`struts.xml`,这个文件定义了应用的Action类、结果类型、拦截器链等关键元素。例如: ```xml &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;action name="login" ...

    基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发

    首先,Struts2.0引入了注解支持,使得开发者可以在Action类中直接定义方法与Struts的Action映射关系,而无需编写XML配置文件。例如,在`RegisterAction`类中,`@ParentPackage("struts-default")`注解指定了基础包,...

    struts2+spring整合

    - 在Spring配置文件中定义Action类及其依赖,Action类通常配置为`scope="prototype"`,以确保每次请求都能获得一个新的实例。 - 在Struts2的配置文件(通常是struts.xml)中,指定`&lt;action&gt;`元素的`class`属性为...

    maven3+struts2+spring+ibatis

    这个属于与Spring整合的问题,Spring容器在初始化对象的时候会根据bean的scope配置来考虑是重新建立一个对象,还是继续使用原来的对象,拿struts2的action的bean来说,如果scope这个参数没有配置,默认就是单例,即...

    struts2整合spring

    在`struts.xml`中,通过指定Action的class属性为Spring配置文件中bean的id来实现整合: ```xml &lt;action name="LoginAction" class="LoginAction"&gt; &lt;result name="success"&gt;/index.jsp &lt;/action&gt; ``` 2. **...

    图解SSH(struts2,spring,hibernate)框架配置步骤

    在 `struts.xml` 文件中,将 Action 类的配置改为引用 Spring 中的 Bean ID,如: ```xml &lt;action name="login" class="loginAction"&gt; ``` 这样,Struts2 就会通过 Spring 获取 Action 实例。 ### 2. Spring 与 ...

    struts2 和 spring 的项目

    然后,在struts.xml中配置Action,使用`@SpringBean`注解来指定Spring中的bean: ```xml &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;action name="uploadImage" class="@SpringBean...

    struts2+spring+hibernate整合中spring注入出错。页面中报空指针异常。高手来看看怎么决绝。

    1. **配置错误**:检查Spring的配置文件(如`applicationContext.xml`),确保所有需要被注入的对象(如Service、DAO)都有对应的bean定义,并且正确设置了`scope`属性(通常为`prototype`或`singleton`)。...

    Spring 和struts 整合的三种方式

    首先,我们需要在Struts 2的配置文件(struts.xml)中启用Spring插件: ```xml &lt;constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/&gt; ``` 接着,在Spring配置...

    struts2.2.3+spring3.1.0+hibernate4.0整合

    整合Struts2和Spring,首先需要在Struts2的配置文件`struts.xml`中添加Spring插件,这样Struts2可以通过Spring来管理Action类。接着,将Action类声明为Spring的bean,并在Spring的配置文件`applicationContext.xml`...

    struts2 整合spring 必备包 s2sh

    - **Spring 配置文件**:在 Spring 配置文件中,定义需要被 Struts2 使用的 Action 对象,使用 `scope` 属性控制bean的作用范围,通常为 `prototype` 或 `request`。 5. **Action类的配置**: - Action 类通常...

    SSH整合 struts+hibernate+spring

    - Spring默认使用单例模式管理Bean,需要多例时需设置`scope`属性为`"prototype"`。 #### 三、使用AOP进行整合 **AOP(Aspect Oriented Programming,面向切面编程)** 是Spring提供的另一种强大功能,它可以用来...

    Myeclipse下整合springstruts2

    在`struts.xml`文件中,我们需要指定使用Spring作为对象工厂,这允许Struts2从Spring容器中获取Action实例。添加以下关键代码: ```xml &lt;constant name="struts.objectFactory" value="spring" /&gt; &lt;package name...

    struts2+hibernate+spring整合

    在Struts2的配置文件`struts.xml`中,我们需要告诉Struts2使用Spring作为其对象工厂,这样Action类实例将由Spring来创建: ```xml &lt;constant name="struts.objectFactory" value="spring" /&gt; ``` 然后,在`...

    maven3.0+struts+spring+hibernate

    这个属于与Spring整合的问题,Spring容器在初始化对象的时候会根据bean的scope配置来考虑是重新建立一个对象,还是继续使用原来的对象,拿struts2的action的bean来说,如果scope这个参数没有配置,默认就是单例,即...

    Struts 1.3.10+Spring3.0.5+Mybatis3.1.1框架整合全部jar包

    2. **Spring与Struts的集成**:使用Spring的Struts插件,将Action类的实例交给Spring容器管理,通过`&lt;bean&gt;`标签定义Action类并设置scope为prototype,保证每次请求都创建新的Action实例。 3. **Spring与Mybatis的...

    Struts2+Spring3+Hibernate3整合文档

    最后,在`struts.xml`文件中配置Action,使用Spring的IOC来管理Action对象: ```xml &lt;!-- 使用Spring管理Action --&gt; &lt;constant name="struts.objectFactory" value="spring"/&gt; &lt;!-- 配置Action --&gt; &lt;package name=...

    Spring与Struts集成方式三

    5. **Action配置**:在Struts的配置文件中,指定Action的class属性为Spring中的bean ID,而不是实际的类名。例如: ```xml &lt;action name="helloWorld" class="helloWorldAction" method="execute"&gt; &lt;result name=...

    Struts2.X 及于spring集成的jar

    2. **配置Struts2**: 在`struts.xml`配置文件中,启用Spring插件。例如: ```xml &lt;constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" /&gt; ``` 3. **配置Spring...

    struts2+spring3+hibernate3整合源码包

    - 配置Spring:在applicationContext.xml中定义Action类作为bean,设置其scope为prototype,因为每个请求都需要一个新的Action实例。 - 配置Hibernate:在hibernate.cfg.xml中设置数据库连接信息,配置实体类和...

Global site tag (gtag.js) - Google Analytics