Spring总结及不同版本间的区别以及 Struts1.2+Spring1.2+Hibernate3.1的整合

【精选】Spring框架介绍及Spirng各个版本的特性 Spring框架英文全称Spring Framework,是由Spring团队研发的模块化、轻量级开源框架。其主要目的是为了简化项目开发。在项目开发中,可以说没有刻意使用Spring,却处处有着Spring存在。用官网对Spring框架的介绍:Spring框架核心功能包含依赖注入、事务管理、Web应用、数据访问、消息发送等等。 阅读详情

一 Spring中有一个IOC对象容器(Spring内部的一个HashMap容器),用于盛放对象的!

Spring中全部生成的对象都放在IOC对象容器中的!是以name或id的值做键存在容器中的!

 

给对象注入值的方式:---以下的4种全部都是交给Spring框架去注入的!

1.       用不带参数的构造子依赖注入

2.       Set依赖注入

3.       带参数的构造子依赖注入

4.       接口依赖注入

5.       LookUp-Method(使用CGLIB的动态字节码增强功能)注入,重写方法!

<ref bean="p3"/>---表示可以引用其他Xml中的Bean;

<ref local="a"/>---local表示只能引用本Xml中的Bean;

Spring中加载上下文的三种方式:

ApplicationContext act=new ClassPathXmlApplicationContext(“applicationContext.xml”);

Resource resource=new ClassPathResource("application.xml");

ApplicationContext  act =  new  FileSystemXmlApplicationContext (“F:/绝对路径/application.xml”) ;

二 Spring配置工厂Bean

调用getBean(“工厂bean的id”)方法,Spring返回的不是直接创建的工厂Bean的实例,而是由工厂Bean创建的Bean实例(工厂bean生产的产品实例).

三 Spring的IOC容器用于管理Struts和Hibernate

 SessionFactory和事务都是Hibernate中的东西,而不是Spring 的,Spring只是进行了封装,本质上是Hibernate的,Spring通过SpringORM封装了Hibernate!

 

注意:在使用Spring的时候,由Hibernate生成的影射文件中要取消指定的数据库名,否则查询数据库是要报错!

 

----------整合部分!

四 Struts1.2+Spring1.2+Hibernate3.1的整合(重点)

 

 

1.        Struts1.2的配置文件: Struts-config.xml文件都是自动生成的!

  <action-mappings >

    <action

      attribute="userForm"  

      parameter="m"

      path="/user"

      name="userForm"

      type="org.springframework.web.struts.DelegatingActionProxy"—不同点就在这里,不是Action的包路径了,而是使用Spring的代理类交给Spring去创建Action的事例!让它享受Spring的服务!

      validate="false">

      <forward name="user" path="/user.jsp"></forward>

     </action>

</action-mappings>

  <message-resources parameter="org.tongying.www.ApplicationResources" />

</struts-config>

 

 

 

2.  Spring的配置文件 ApplicationContext.xml文件头文件自动生成

<beans>

<!--session工厂-->

使用的事务和事务的管理都是用的Hibernate里面的东西,都在Spring的.orm.hibernate3的下面

<bean id="sf" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

     <property name="configLocation">

     <value>classpath:hibernate.cfg.xml</value>

     </property>

</bean>

<!--事务管理-->

<bean id="tm" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory" ref="sf"></property>

</bean>

配置的继承

下面的配置可以使用配置继承的方法来减少Spring的配置泛滥

先写个基础的代理,不指定target的代理目标,并且告诉Spring是抽象的不能使用,abstract=”true”!

当建对于具体的目标的Bean的时候,继承上面的基础代理就可以了!parent=”baseProxy”

再把target指定代理目标!

<!--servicei代理-->这就是代理,可以在其中加工处理的!

用事务拦截机的代理工厂Bean,针对业务层进行事务的监控--

<bean id="basePoxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

    <property name="transactionManager" ref="transactionManager"></property>

       <property name="transactionAttributes">

        <props>

            <prop key="insert*">PROPAGATION_REQUIRED</prop>

            <prop key="delete*">PROPAGATION_REQUIRED</prop>

            <prop key="update*">PROPAGATION_REQUIRED</prop>

            <prop key="save*">PROPAGATION_REQUIRED</prop>

            <prop key="merge*">PROPAGATION_REQUIRED</prop>

            根据不同的动作而执行事务!   

            <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>

        </props>

    </property>

</bean>

 

针对业务层进行事务的监控

<bean id="userserviceproxy"  parent="baseproxy">

    <property name="target" ref="userservicei"></property>     

</bean>

<!--daoimpl-->要使用SessionFactory查询持久层!

<bean id="userdaoi" class="org.wllt.www.daoi.UserDaoi">

  <property name="sessionFactory" ref="sf"></property>

</bean>

 

<!--serviceimpl-->要使用Dao接口的数据

<bean id="userservicei" class="org.wllt.www.servicei.UserServicei">

  <property name="dao" ref="userdaoi"></property>

</bean>

 

<!--Action-->要使用业务层的数据

<bean name="/user" class="org.wllt.www.action.UserAction" singleton=”true”>--默认就是true

  <property name="userservice" ref="userservicePoxy"></property>

但是不能直接来自于Servicei,因为在业务层需要事务,数据库才会生效!只有先用代理处理!

</bean>

</beans>

3.Web.xml文件

Struts1.2的配置文件自己会加载的,但是Spring则要我们自己来写配置!

---上下文的加载Spring的配置文件!

<context-param>     

 <param-name>contextConfigLocation</param-name>

       <param-value>classpath:applicationContext.xml</param-value>

 </context-param>

---Spring加载监听器

   <listener>     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

注意:在整合的过程中,Spring的jar包和Hibernate的jar包有许多的冲突,我们的处理方法是把Hibernate的兼容性先添加到项目中,让它可以帮我们产生配置文件和po影射文件,再移出全部的jar 包,把Hibernate的一个.jta拷到项目中就够使用了!。在和Struts2.0的整合过程中也是如此!(只不过还有一个Struts2到Spring的插件.jar)

两个.jar包都是倒到项目的WebRoot下的Web-Inf下的lib下就可以了!

Struts1.2和Struts2.0配合Spring1.2时的区别:

(1)1.2在Struts-config.xml中使用代理类来来把Action的事例交给Spring的

org.springframework.web.struts.DelegatingActionProxy

     2.0中是在Actions.xml中使用class=”Action在Spring 中的id名”

 (2)1.2在Application中定义Action是使用的name=”/useraction”

2.0 -------------------------------  id=”useraction”  

 (3)2.0在struts.xml中使用了<constant name="struts.objectFactory" value="spring"/>

(4)web.xml都是一样的!

五.Struts2.0+Spring1.2+Hibernate3.1的整合!

1.自己建actions.xml文件

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "struts-2.0.dtd">  

 <struts>

    <package name="one" namespace="/one" extends="struts-default">

 

    <!--利用class="useraction"到Spring容器中去找生成的对象-->

    <action name="user" method="list" class="useraction">-原来是action的包路径,Spring整合不同

     <result name="user">/user.jsp</result>

        </action>     

    </package>

 </struts>

2.自己建struts.xml文件

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "struts-2.0.dtd">

   

    <struts>

      <constant name="struts.devMode" value="true" />

      <constant name="struts.locale" value="zh_CN" /> 

      <constant name="struts.i18n.encoding" value="GBK" />

      <constant name="struts.action.extension" value="action,itfuture,do"/>

     

      <!--利用Struts2到Spring的插件把Struts和Spring联系起来 -->[不用也可以]

      <constant name="struts.objectFactory" value="spring"/>

      <!--加载了action.xml-->

      <include  file="actions.xml"/>

</struts>

3.Spring中的applicationContext.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<!--SessionFactory-->

   <bean id="sf" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

       <property name="configLocation">

       <value>classpath:hibernate.cfg.xml</value>

       </property>

   </bean>

<!--事务的管理-->

   <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

        <property name="sessionFactory" ref="sf"></property>

   </bean> 

<!--serviceiproxy用事务拦截机的代理工厂Bean,针对业务层进行事务的监控,可以先做成代理的一个模版(其他的地方引用即可!)-->

<bean id="baseproxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

     <property name="transactionManager" ref="transactionManager"></property>

     //去掉--<property name="target" ref="servicei"></property>--//

     <property name="transactionAttributes">

         <props>  

            <prop key="save*">PROPAGATION_REQUIRED</prop>

            <prop key="delete*">PROPAGATION_REQUIRED</prop>

            <prop key="update*">PROPAGATION_REQUIRED</prop>   

            <prop key="insert*">PROPAGATION_REQUIRED</prop>

            <prop key="merge*">PROPAGATION_REQUIRED</prop>

            

            <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>

         </props>

     </property>

</bean>

此处引用定义代理(都可以适用的,部分什么版本的配合!)

<bean id="deptserviceiproxy" parent="baseproxy">

    <property name="target" ref="deptservicei"></property>

</bean>

 

<!--daoimpl-->   

<bean id="daoi" class="org.wllt.www.daoi.UserDaoi">

  <property name="sessionFactory" ref="sf"></property>

</bean>

 

<!--serviceimpl-->

    <bean id="servicei" class="org.wllt.www.servicei.UserServicei">

        <property name="dao" ref="daoi"></property>

</bean>

 

<!--action-->

    <bean id="useraction" class="org.wllt.www.action.UserAction" singleton=”true”>

    <property name="service" ref="serviceproxy"></property>

    </bean>   

</beans>

 

LookUp(利用CGLIB增强技术完成)

<lookup-method name=”方法名” bean=”返回类型”>

六.Spring2.0的使用!

(Struts2.0+Spring2.0+Hibernate3.1)

1.       Spring2.0完全向下兼容Spring1.2,代码不经过改动就可以运行项目!

2.       Spring1.2和Spring2.0的区别在哪里?

区别就是在applicationContext.xml的文件中!(在.jar包里有)

a.头文件不同1.2是.dtd规则,而2.0是.xsd规则

b.下面的<action>配置单态性不同!

<!--action-->

  <!--spring2.0用scope="singleton/prototype"替代spring1.2中的singleton="true/false"-->

  <bean id="deptAction" class="org.itfuture.www.actions.DeptAction" scope="prototype">

     <property name="service" ref="deptserviceiproxy"></property>

  </bean>

Spring 6【什么是Spring 6、Spring框架介绍 、Spring IoC/DI 详解 】(一)-全面详解(学习总结---从入门到深化) Spring 6【什么是Spring 6、Spring框架介绍、Spring IoC/DI 详解】(一)-全面详解(学习总结---从入门到深化) 阅读详情

相关推荐

Spring Framework最新版本 spring-webmvc-5.2.9.RELEASE

避免可能会绕过CVE-2015-5211对RFD攻击的保护,具体取决于通过使用jsessionid路径参数使用的浏览器。

Spring各个版本的特性

总结Spring各个版本特点,让Spring的发展进化流程清晰展现,帮助大家理解Spring源码。 一、Spring 1.0 二、Spring 2.0 三、Spring 3.0 四、Spring 4。

诗人不写诗 8723

spring框架6 框架新功能&&Webflux

Spring5框架新功能 1、整个Spring5框架的代码基于Java8, 运行时兼容JDK9, 许多不建议使用的类和方法在代码库中删除。 2、Spring 5.0框架自带了通用的日志封装 (1) Spring5已经移除Log4jConfigListener,官方建议使用Log4j2 (2) Spring5框架整合Log4j2。 第一步引入jar包, 3. Spring5框架核心容器支持@Nullable注解。 (1) @Nullable. 注解可以使用在方法上面,属性上面,参数上面,表示方法返回可以

XiaoXiao_Lin的博客 3361

图像去雾新思路:手把手教你复现DEA-Net中的“细节增强卷积”与PyTorch实现

本文详细解析了DEA-Net中的'细节增强卷积'(DEConv)与PyTorch实现,通过多分支差分卷积和重参数化技术,显著提升单图像去雾效果。文章从数学原理到代码实现,手把手指导复现这一创新架构,帮助开发者在保持轻量化的同时实现41dB以上的PSNR指标,适用于自动驾驶、遥感监测等关键领域。

weixin_30323631的博客 506

保姆级教程:用Jetson Orin Nano和ROS2 Humble搞定PIXhawk 4飞控通信(含配置文件详解)

本文提供了一份详细的Jetson Orin Nano与PIXhawk 4飞控通信配置指南,涵盖硬件连接、ROS2 Humble环境搭建、MAVROS2配置及通信调试全流程。通过实战案例和配置文件详解,帮助开发者快速实现无人机上位机与飞控的稳定通信,适用于无人机开发与自动化控制场景。

weixin_33670786的博客 475

Struts2+spring2+hibernate3整合方案

Struts2+spring2+hibernate3整合方案最近闲来无事可做,于是开始学习struts2。Struts2和struts1、webwork2有什么区别我也不说了,网上有很多这方面的资料。以前在项目中从未使用过struts,一直使用spring+hibernate,现在既然学习了Struts,也不能浪费,于是乎开始琢磨着怎么整合这3个框架。整合原理以spring为容器,管理hibe

1326

欢乐熊大话蓝牙知识16:蓝牙是怎么找设备的?扫描与广播的“对话内幕”

蓝牙是怎么找设备的?扫描与广播的对话技术介绍

hoony123的博客 1382

SSH2 Step by Step- Step 4 - Struts2、Spring和Hibernate的整合

折腾了好几天,终于把SSH2的框架搭起来,期间经历的兴奋,痛苦,犹豫...最终是领悟:太完美的要求,其实就是拖延...所以在以下的jar包的选择上,跟前面几篇的原则有了很大的区别: Struts包保持原样。Spring 和hibernate的包按最大的导入,因为少了个jar文件导致的错误查找,实在是这两天最痛苦的事情。Hibernate从4.0降到3.6.8,原因是Hibernate4改

bruesz的专栏 3787

华为OD机试 - 去除多余空格(Python/JS/C/C++ 2024 E卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和结束下标。条件约束:输入为两行字符串:第一行:待去除多余空格的文本,用例保证如果有单引号,则单引号成对出现,且单引号可能有多对。 第二

学Java,找哪吒 1217

【RT-DETR有效改进】利用ASF-YOLO改进特征融合层(附代码 + 详细教程)

本文给大家带来的改进机制是ASF-YOLO(发布于2023.12月份的最新机制),其是特别设计用于细胞实例分割。这个模型通过结合空间和尺度特征,提高了在处理细胞图像时的准确性和速度。在实验中,ASF-YOLO在2018年数据科学竞赛数据集上取得了卓越的分割准确性和速度,达到了0.91的box mAP(平均精度),0.887的mask mAP,以及47.3FPS的推理速度,效果非常的好,这个结构本来是用于分割的,我将其移植到了目标检测的模型上,所以其可以适用于分割和目标检测。

Snu77的博客 2295

Struts2 Spring3 Hibernate3 菜鸟教程 集成注解版本

集成注解版本和xml版本所不同的地方 如果类不是自己写的还是在xml里面进行配置 只有是自己写的类,直接在类上面标注对应的注解 注解版本不建议继承HibernateDaoSupport实现 必须提供事务支持 UserDAOImpl package com.jege.ssh.dao.impl; import java.util.List; import org.hibernate.Se

菜鸟教程 3130

YOLO26涨点改进 |TGRS 2026 | 全网独家改进、特征融合创新篇 | 引入CMIFE跨模态交互特征提取模块,充分挖掘互补信息,适合多模态图像融合,目标检测,实例分割,遥感图像分类高效涨点

本文提出CMIFE模块用于改进YOLO26网络模型,通过跨模态交互特征提取实现多尺度特征的精细化融合。该模块采用双注意力机制(自注意力强化模态内一致性,交叉注意力实现跨模态互补信息筛选),有效解决了传统YOLO融合中的信息冗余和负迁移问题。实验表明,CMIFE模块在保持模型实时性的同时,显著提升了小目标检测、遮挡场景等复杂环境下的检测精度。文章详细介绍了模块原理、网络结构、核心代码实现方法,并提供了三种改进版YOLO26的配置文件方案(yolo26_CMIFE-1/2/3.yaml)。

Ai缝合怪、助力小伙伴高效发论文 147

SSH的整合,Spring与Hibernate整合,与Struts2整合,ssh整合

前言,Spring管理实务,Hibernate控制持久层,Struts控制action层 一,Spring和hibernate的整合 导入Hibernate的jar包,在Hibernate文件夹下的 lib的required文件夹下。 导入Spring的jar包,在Spring的文件夹自行找(以上两个框架请自行上网下载 1、导入hibernate的包和Spring的包    1.1、导入

guin_guo的博客 1020

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Spring 3.0 + Struts 2.1 + Hibernate 3.3 框架整合小结

引言:   学习SSH框架有一阵了,今天对SSH框架整合做一个小结。 我的操作步骤是  Spring  à  Hibernate  à  Sturts 2 环境是MyEclipse 9.0 主要采用添加功能支持的方式:( MyEclipse à  add xxxx capabilities )     创建Web Project略。     一、Spring   1. 添加

小菜鸟的笔记分享 1040

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SSH Java三大框架整合(Struts 2+Hibernate+Spring+mysql)

以前一直整合Struts 1.x,用Struts1.x做一些简单的项目。最近把Struts 2学了,感觉两者区别挺大的,自己学完就想整点东西出来,然后就把Spring 、Hibernate、Struts 2整合一下。 ------------IT行业苦逼的孩子,希望大牛指导 一、集成环境 Struts 2  、Spring 2.5 、Hibernate 3.3 项目开始首先应该

NCITS的专栏 6569

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【面试准备】Spring、SpringMVC、Struts2、MyBatis、Hibernate的区别

区别比较:Spring、SpringMVC、Struts2、MyBatis、Hibernate 致自己的面试准备题,加入自己以及整合其他人分享的! 1. SpringMVC和Struts2的区别 1 Struts2是类级别的拦截,SpringMVC是方法级别的拦截。 2 SpringMVC的入口是servlet,而Struts2是filter 3 SpringMVC集成了Ajax,只需一个注解...

技术宅-Nopi的博客 1008

struts和hibernate简单整合

最近自己研究了下ssh框架,目前练习了struts+hibernate,特来记录下。  首先去官网下载最新的包,我的都是最新的,当然最新的也有最新的坑..... 首先创建文件总目录 先配置必须的xml文件 1.hibernate.fig.xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE hibernate-c...

weixin_42659261的博客 3759

ssh框架搭建Struts2.06+spring2.5+hibernate3.2整合实例代码教程步骤

ssh框架搭建Struts2.06+spring2.5+hibernate3.2整合实例代码教程步骤 源代码下载地址:http://www.zuidaima.com/share/1760074977233920.htm

springmvc_freemarker的博客 911

Struts2-Spring和Hibernate整合

Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点:MVC 2模型的使用、功能齐全的标志库(Tag Library)、开放源代码。而Spring的出现,在某些方面极大的方面了Struts的开发。同时,Hibernate作为对象持久化的框架,能显示的提高软件开发的效率与生产力。这三种流行框架的整合应用,可以...

weixin_30550271的博客 138

Spring总结及不同版本间的区别

Spring总结及不同版本间的区别 来源:西安通瀛  作者:  时间:2010-11-26 09:52:00  浏览:4090次     一 Spring中有一个IOC对象容器(Spring内部的一个HashMap容器),用于盛放对象的! Spring中全部生成的对象都放在IOC对象容器中的!是以name或id的值做键存在容器中的!   给对象

svn服务器搭建 3706

Struts2+spring2+hibernate3实例源码-java源码

转贴自:http://www.java125.cn/article.asp?id=2481 最近闲来无事可做,于是开始学习struts2。Struts2和struts1、webwork2有什么区别我也不说了,网上有很多这方面的资料。以前在项目中从未使用过struts,一直使用spring+hibernate,现在既然学习了Struts,也不能浪费,于是乎开始琢磨着怎么整合这3个框架。整合原

tianbuming的专栏 1093

java ssh整合_SSH框架整合(Spring整合Struts2,和Spring整合Hibernate)

SSH整合原理: 导包:共40个jar包,其中:40=41-1(重复)Hibernate5(9):hibernate解压目录/lib/requiredstruts2.3(14):struts2解压目录/apps/blank.war(空白项目)注意:struts2.3与hibernate5中有一个重复的jar包,将较低版本删除。struts2-spring-plugin-xxx.jar (sprin...

weixin_30805181的博客 194

面试题(2)——struts2,hibernate,spring

文章目录1 java框架部分1.1 Struts21.Struts2 的六个基本包2.struts2 配置文件3.Struts2 常用注解4.struts2 工作流程?你的理解?5.Struts2 问题合集5.1Struts 的设计模式5.2拦截器和过滤器的区别5.3struts2 有哪些优点?5.4struts2 框架的核心控制器是什么?它有什么作用?5.5struts2 默认能解决 get 和...

weixin_45044097的博客 987
上一篇: PL/SQL 链接Oracle 超时
下一篇: struts2 valuestrack 原理
dw_java08
博客等级 码龄15年 122粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值