Struts2 和spring整合的 Action层托管问题

简介: 首先分为 entity(实体) dao(数据库操作) service   action四个层 千万不要注解xml混用   通常我么对于四个层的单多例设置为: (1)    action一定要设为多例 注意:Struts管理时;当使用注解@Scope("singleton")设置action为单例时,可以通过属性注入设置属性的为多例。(很奇怪,和sprig管理不同) spri


首先分为 entity(实体) dao(数据库操作) service   action四个层

千万不要注解xml混用

 

通常我么对于四个层的单多例设置为:

(1)    action一定要设为多例

注意:Struts管理时;当使用注解@Scope("singleton")设置action为单例时,可以通过属性注入设置属性的为多例。(很奇怪,和sprig管理不同)

spring管理时,当action设置为单例时,不管你怎么设置里面的属性为多例,并且注入到action,都是没用的

 

 

2Daoservice考虑到效率要设为单例。

3Entity层不需要任何设置,不需要把它加到springbean工厂中:(如果把它加入到bean工厂中千万不要把bean设为单例,因为即使不主动注入到action中,当和action中的属性名字相同时,struts会自动把它注入进去。这样此属性就会变成单例,每次请求数据只要不覆盖都会保存有原来的值。如:User实体中有nameid,那么第一次请求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使用springxml配置是无法注入到action中的。

。spring管理

(第一种)<constant name="struts.objectFactory" value="spring" /> 

(第二种)当 strus配置文件中的值,使用spring bean工厂中的名字时,默认此actonspring管理

此时action为单例(spring 默认为单例),注意此时,一定要把此action设置为多例,因为只要不覆盖数据都会保留上一次的数据。

当把action设置为多例(可以使用xml,注解)时,可以通过两种方式设置里面的属性为多例。

1)使用xml,(2)使用注解。但是当在xml中不设置自动匹配时,此action时不会像struts管理时主动的匹配bean工厂的。

Spring 管理时,当没有注入到action相应的属性时,struts会自动new一个相应的属性对象。

目录
相关文章
|
9月前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
570 7
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
497 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
Java Spring Maven
Struts 2遇见Spring:这个组合如何颠覆你的Web开发?
【8月更文挑战第31天】在现代Web开发中,Struts 2与Spring的结合使用能显著增强应用的模块化和可维护性。本文将介绍如何整合这两个框架,并提供代码示例。首先,在`pom.xml`中添加Struts 2和Spring的依赖,然后在`struts.xml`中配置Struts 2以识别Spring插件。接着,在Spring配置文件中定义bean,并在Struts 2的Action类中使用`@Autowired`注解进行自动注入。
253 0
|
Java 开发者 前端开发
Struts 2、Spring MVC、Play Framework 上演巅峰之战,Web 开发的未来何去何从?
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活配置备受青睐,但开发者常遇配置错误、类型转换失败、标签属性设置不当及异常处理等问题。本文通过实例解析常见难题与解决方案,如配置文件中遗漏`result`元素致页面跳转失败、日期格式不匹配需自定义转换器、`&lt;s:checkbox&gt;`标签缺少`label`属性致显示不全及Action中未捕获异常影响用户体验等,助您有效应对挑战。
221 0
|
XML Java Apache
必知的技术知识:HHS整合(Struts2+Spring+Hibernate)
必知的技术知识:HHS整合(Struts2+Spring+Hibernate)
147 0
|
XML Java 程序员
工作三年,小胖问我 Spring 是怎么托管 Bean 的?真的菜!
工作三年,小胖问我 Spring 是怎么托管 Bean 的?真的菜!
工作三年,小胖问我 Spring 是怎么托管 Bean 的?真的菜!
|
Java API Spring
Struts2【整合Spring】
Struts2【整合Spring】
196 0
Struts2【整合Spring】
|
XML 前端开发 Java
Spring与Struts2的整合案例及XML配置的具体使用(四)
Spring与Struts2的整合案例及XML配置的具体使用(四)
541 0
Spring与Struts2的整合案例及XML配置的具体使用(四)
|
开发框架 Java 数据库连接
Struts2+Spring+Hibernate整合步骤
Struts2+Spring+Hibernate是J2EE的最新流行框架。本篇是我搭建这个框架的经验总结。 本方案采用自底向上:Hibernate——>Spring——>Struts2的方式进行整合。具体步骤如下: 1.通过MyEclipse向导,导入实现Hibernate3.2功能:生成会话工厂和hibernate.cfg.xml文件。然后在src中添加log4j.properties文件。 2.通过MyEclipse向导,导入实现Spring2.5功能,生成applicationContext.xml文件。然后将Spring2.0 AOP Liberaries里的asm2.2.3.jar包
269 0