步骤五:struts+spring 集成

在 struts 的配置文件 struts-config.xml 中以插件的方式集成spring,同时配置全局的委托代理(可选)。
注意:plug-in 插件必须写在配置文件的最后一项。

struts-config.xml配置文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts-config PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
  4. "http://struts.apache.org/dtds/struts-config_1_2.dtd">
  5. <struts-config>
  6. <data-sources />
  7. <form-beans >
  8. </form-beans>
  9. <global-exceptions />
  10. <global-forwards />
  11. <action-mappings >
  12. </action-mappings>
  13. <!-- 集成Spring -->
  14. <!-- 全局委托代理 -->
  15. <controller>
  16. <set-property value="org.springframework.web.struts.DelegatingRequestProcessor" property="processorClass"/>
  17. </controller>
  18. <!-- 注入spring插件 -->
  19. <plug-in
  20. className="org.springframework.web.struts.ContextLoaderPlugIn">
  21. <set-property property="contextConfigLocation"
  22. value="/WEB-INF/applicationContext.xml"/>
  23. </plug-in>
  24. </struts-config>

步骤六:在Spring中配置事务管理—applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans
  3. xmlns="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns:p="http://www.springframework.org/schema/p"
  6. xsi:schemaLocation="
  7. http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  9. <!-- 配置数据源  -->
  10. <bean id="dataSource"
  11. class="org.apache.commons.dbcp.BasicDataSource"
  12. destroy-method="close">
  13. <!--JDBC驱动-->
  14. <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
  15. <!--数据库URL-->
  16. <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
  17. <!--数据库用户名-->
  18. <property name="username" value="scott" />
  19. <!--数据库密码-->
  20. <property name="password" value="tiger" />
  21. </bean>
  22. <!-- 事务管理器 -->
  23. <bean id="transactionManager"
  24. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  25. <property name="dataSource" ref="dataSource" />
  26. </bean>
  27. <!-- 事务代理基类 -->
  28. <bean id="txProxyTemplate" abstract="true" lazy-init="true"
  29. class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  30. <property name="transactionManager" ref="transactionManager"></property>
  31. <property name="transactionAttributes">
  32. <props>
  33. <prop key="do*">PROPAGATION_REQUIRED,-Exception</prop>
  34. </props>
  35. </property>
  36. </bean>
  37. </beans>

事务特性:

PROPAGATION_REQUIRED: 在当前的事务中进行,如果没有就建立一个新的事务

PROPAGATION_REQUIRES_NEW: 建立一个新的事务,如果现存一个事务就暂停它

PROPAGATION_MANDATORY: 方法必须在一个现存的事务中进行,否则丢出异常

PROPAGATION_NESTED: 在一个嵌入的事务中进行,如果不是,则同PROPAGATION_REQUIRED

PROPAGATION_NEVER: 指出不应在事务中进行,如果有就丢出异常

PROPAGATION_NOT_SUPPORTED: 指出不应在事务中进行,如果有就暂停现存的事务

PROPAGATION_SUPPORTS: 支持现在的事务,如果没有就以非事务的方式执行

事务应用:

  1. <bean id="EmpService" parent="txProxyTemplate">
  2. <property name="target">
  3. <bean class="com.test.EmpServiceImpl">
  4. <property name="empDao" ref="EmpDao"></property>
  5. </bean>
  6. </property>
  7. </bean>

注意:

不应该调用一个数据源的 getConnection()方法和Connection的close()方法,而必须使用Spring的 org.springframework.jdbc.datasource.DataSourceUtils类

如下:

Connection conn = DataSourceUtils.getConnection(dataSource);
     …

DataSourceUtils.releaseConnection(conn, dataSource);

转载于:https://blog.51cto.com/375940084/823331

Struts1+Spring+Ibatis集成开发步骤(三)相关推荐

  1. Spring+Ibatis集成开发实例

    首先简历数据库demo(本文选mysql) 数据库脚本: CREATE TABLE `ibatis` (   `id` varchar(20) NOT NULL,   `name` varchar(2 ...

  2. spring cloud微服务分布式云架构 - Spring Cloud集成项目简介(三)

    点击上面 免费订阅本账号! 本文作者:it菲菲 原文:https://yq.aliyun.com/articles/672242 点击阅读全文前往 Spring Cloud集成项目有很多,下面我们列举 ...

  3. Spring中AOP开发步骤

    AOP:不是由Spring定义.AOP联盟的组织定义.Spring中的通知:(增强代码)前置通知 org.springframework.aop.MethodBeforeAdvice* 在目标方法执行 ...

  4. Spring boot 集成 ureport (三) 报表存储至数据库

    声明:代码为核心代码,为了简洁!完整代码请移步我的github -->[带我传送到github] UReport2默认提供的名为"服务器文件系统"的报表存储机制,实际上是实现 ...

  5. liferay + struts2 + spring + ibatis整合开发案例

    1 首先 开发的工程和案例是根据另外一个人博客进行开发的 开发地址如下:  http://sweat89.iteye.com/blog/1686206 2 按照这位前辈的开发,搭建好后发现有很多问题, ...

  6. Spring Cloud应用开发(三:客户端的负载均衡)

    1.Ribbon的使用 注:在石榴啊RestTemplate的方法上添加@LoadBalanced注解,并在其执行方法中使用服务实例的名称即可: 1.1.添加@LoadBalanced注解,在ms-s ...

  7. spring程序开发步骤

    1.使用spring框架之前的开发步骤 2.使用spring之后的开发步骤 3.文字描述 1.导入Spring开发的基本依赖 2.编写Dao接口和实现类 3.创建spring核心配置文件 4.在spr ...

  8. dropwizard 连接mysql_Dropwizard入门及开发步骤

    Dropwizard介绍 Dropwizard是一个微服务框架, 是各项技术的一个集成封装.它包含了以下组件: - 嵌入式Jetty,一个应用程序被打包成一个Jar文件,并开始自已嵌入的Jetty容器 ...

  9. python的常用集成开发环境_【分享|10个超好用的Python集成开发环境推荐】- 环球网校...

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注Py ...

  10. (Spring程序开发)简介程序开发步骤配置文件相关API

    1Spring简介 1.1 Spring是什么 Spring是分层的Java SE/EE应用full-stack 轻量级开源框架, 以IoC(Inverse Of Control:反转控制) 和**A ...

最新文章

  1. 2020年智能车竞赛由预赛赛道拼接成决赛赛道的方案
  2. 在python中、下列代码的输出是什么-Python 面试中 8 个必考问题
  3. 在软盘上找不到id地址标记_记录一下我的群辉使用腾讯云域名解析IPv6地址
  4. 浅谈Base64编码算法
  5. JavaScript中判断是否存在某属性
  6. 查询各个分区的数据量_分库、分表、分区的区别,傻傻分不清?
  7. 幅度和幅值有区别吗_克拉克 (Clark) 变换中等幅值 (2/3) 和等功率 (sqrt(2/3)) 变换的公式推导...
  8. 同一台机器上安装2个SDE服务
  9. linux 测试环境启用jar_Linux下搭建测试环境
  10. 诱导公式的本质【转载】
  11. mysql之 OPTIMIZE TABLE整理碎片
  12. rhcsa第二天笔记
  13. dataframe先分组再画图
  14. 使用Lettuce执行命令,应该有多个返回值却只取到一个。
  15. wpe代理管家_wpe不能抓取封包
  16. c#中控制不能从一个case标签贯穿到另一个case标签是啥意思
  17. 请用java代码实现冒泡排序并输出,深夜思考
  18. 真香定律!java的微服务框架
  19. Go 事件驱动 实现事件的晌应和处理
  20. 手机连接小爱音箱15分钟后自动断开的解决办法

热门文章

  1. [Python]关键字is和操作符==
  2. serlvet配置xml和@WebServlet
  3. WINDOWS NT/2000下如何屏蔽CTRL+ALT+DEL
  4. [转载]云架构师的进阶之路
  5. Google Kickstart Round.B C. Diverse Subarray
  6. XML+Application来编写计数器(二)
  7. 在vue的项目中引入swiper插件
  8. Centos7-安装Gradle4.10
  9. HyperLedger Fabric 1.4 kafka生产环境部署(11.1)
  10. eclipse中的ctrl+H使用中的问题