Struts2 和spring整合的 Action层托管问题
来源:互联网 发布:js concat函数 编辑:程序博客网 时间:2024/05/17 22:33
首先分为 entity(实体) dao(数据库操作) service action四个层
千万不要注解xml混用
通常我么对于四个层的单多例设置为:
(1) action一定要设为多例
注意:Struts管理时;当使用注解@Scope("singleton")设置action为单例时,可以通过属性注入设置属性的为多例。(很奇怪,和sprig管理不同)
spring管理时,当action设置为单例时,不管你怎么设置里面的属性为多例,并且注入到action,都是没用的
(2)Dao和service考虑到效率要设为单例。
(3)Entity层不需要任何设置,不需要把它加到spring的bean工厂中:(如果把它加入到bean工厂中千万不要把bean设为单例,因为即使不主动注入到action中,当和action中的属性名字相同时,struts会自动把它注入进去。这样此属性就会变成单例,每次请求数据只要不覆盖都会保存有原来的值。如:User实体中有name和id,那么第一次请求action中设置了user.name=”aaa” user.id=1。当本人第二次请求此action时,只带有一个参数 user.id=2,此时 user属性的值为user.name=”aaa”user.id=2)
一. Struts管理action,此时的action默认为多例,,
当struts.Xml中使用action类的全路径时如:<action name="u" class="com.bjsxt.registration.action.UserAction">。时默认为struts管理action
如果action的属性没有使用spring注入时(假设:此时没有使用spring注解注入(注:本人实验结果是===此时spring注解方式可以注入进去,xml方式无法注入),而且没有和属性名同名的bean(struts会首先在spring bean容器中查找和属性名同名的bean,如果有自动注入,没有的话会在set方法最前面new一个新的对象))
此时,完全相当于只有struts而没有其他框架
此时action会在每次请求时new一个新的对象 (new UserAction()),当然,里面的所有属性对象都是新new的,每次都不一样。
Struts会在set方法刚执行时,new一个新的对象,但不是所有的属性都会new,只有在jsp页面中的请求参数带有此对象时才会new。如 只有userManager1.age这个参数时,只会new UserManagerImpl();
但是在get set方法中并不能获得 请求或者 返回的属性值(这个是通过实验得到)。
但是我们可以给 相应的 dao层 和 service层设置为单例(可以用spring注解,也可以使用xml配置)。但是注入到action层的方式只有两种,
(1)通过spring注解(2)在acion中的属性名必须和spring的bean 中的名字一样。注:通过实验证明,struts管理下的action使用spring的xml配置是无法注入到action中的。
二。spring管理
(第一种)<constant name="struts.objectFactory" value="spring" />
(第二种)当 strus配置文件中的值,使用spring bean工厂中的名字时,默认此acton为spring管理
此时action为单例(spring 默认为单例),注意此时,一定要把此action设置为多例,因为只要不覆盖数据都会保留上一次的数据。
当把action设置为多例(可以使用xml,注解)时,可以通过两种方式设置里面的属性为多例。
(1)使用xml,(2)使用注解。但是当在xml中不设置自动匹配时,此action时不会像struts管理时主动的匹配bean工厂的。
Spring 管理时,当没有注入到action相应的属性时,struts会自动new一个相应的属性对象。
- Struts2 和spring整合的 Action层托管问题
- spring整合SpringMVC Controller 和 Struts2 Action控制层Bean的默认作用域
- spring整合SpringMVC Controller 和 Struts2 Action控制层Bean的默认作用域
- Struts2和Spring整合, Action单例和多例的问题
- Struts2与Spring整合时Action的创建问题
- Struts2整合Spring创建的Action同步问题
- SSH中spring和struts2整合遇到的问题,Action class not found
- spring struts2整合之action产生问题
- spring整合struts2后,struts2的action中调用服务层时,不需要在spring配置文件中去注入
- spring-struts2整合 action的管理
- Struts2 是如何把Action交给Spring托管的?
- struts2和spring整合问题
- struts和spring整合创建Action对象的问题?
- Spring和Struts2的action
- SSH整合问题:struts2-spring-plugin自动注入action的属性所产生的问题
- struts2 + spring 整合的问题
- struts2把action交给spring托管
- struts2整合spring--spring beans对Action类的管理
- HDU 1114 Piggy-Bank 完全背包变形
- 有关栈溢出漏洞的利用
- [ARM7--LPC2478]Memory Map
- C++初始化和引用
- 字符串转换成整数
- Struts2 和spring整合的 Action层托管问题
- RQNOJ-PID39 / 饮食问题
- poj 1182 食物链 并查集
- linux配置网络配置
- 寻找她(指令寻址)——(软考六)
- Ubuntu apt-get install 问题: Could not resolve 'cn.archive.ubuntu.com'
- css相对定位,绝对定位,static定位
- OpenGL环境配置Win7-64位+freeglut+glew+VS2012
- iOS笔记—多线程基础