当前位置: 首页 > news >正文

山西太原制作网站人有吗wordpress修改模块样式

山西太原制作网站人有吗,wordpress修改模块样式,天津网站建设开发有哪些,seo手机优化方法Spring 的事务管理有两种方式#xff1a;一种是传统的编程式事务管理#xff0c;即通过编写代码实现的事务管理#xff1b;另一种是基于 AOP 技术实现的声明式事务管理。由于在实际开发中#xff0c;编程式事务管理很少使用#xff0c;所以我们只对 Spring 的声明式事务管…Spring 的事务管理有两种方式一种是传统的编程式事务管理即通过编写代码实现的事务管理另一种是基于 AOP 技术实现的声明式事务管理。由于在实际开发中编程式事务管理很少使用所以我们只对 Spring 的声明式事务管理进行详细讲解。 Spring 声明式事务管理在底层采用了 AOP 技术其最大的优点在于无须通过编程的方式管理事务只需要在配置文件中进行相关的规则声明就可以将事务规则应用到业务逻辑中。 Spring 实现声明式事务管理主要有两种方式 基于 XML 方式的声明式事务管理。通过 Annotation 注解方式的事务管理。我们通过银行转账的案例讲解如何使用 XML 的方式实现 Spring 的声明式事务处理。 1. 创建项目 在 MyEclipse 中创建一个名为 spring 的 Web 项目将 Spring 支持和依赖的 JAR 包复制到 Web 项目的 lib 目录中并添加到类路径下。所添加的 JAR 包如下图所示。 从上图中可以看出这里增加导入了 spring-tx-3.2.13.RELEASE.jar事务管理以及 MySQL 驱动、JDBC 和 C3P0 的 JAR 包。 2. 创建数据库、表以及插入数据 在 MySQL 中创建一个名为 spring 的数据库然后在该数据库中创建一个 account 表并向表中插入两条数据其 SQL 执行语句如下所示 CREATE DATABASE spring; USE spring; CREATE TABLE account (id INT (11) PRIMARY KEY AUTO_INCREMENT,username VARCHAR(20) NOT NULL,money INT DEFAULT NULL ); INSERT INTO account VALUES (1,zhangsan,1000); INSERT INTO account VALUES (2,lisi,1000);执行后的 account 表中的数据如下图所示。 3. 创建 c3p0-db.properties 在项目的 src 下创建一个名为 c3p0-db.properties 的配置文件这里使用 C3P0 数据源需要在该文件中添加如下配置 jdbc.driverClass com.mysql.jdbc.Driver jdbc.jdbcUrl jdbc:mysql://localhost:3306/spring jdbc.user root jdbc.password root4. 实现 DAO 1 创建 AccountDao 接口 在项目的 src 目录下创建一个名为 com.mengma.dao 的包在该包下创建一个接口 AccountDao并在接口中创建汇款和收款的方法如下所示。 package com.mengma.dao;public interface AccountDao {// 汇款public void out(String outUser, int money);// 收款public void in(String inUser, int money); }上述代码中定义了 out() 和 in() 两个方法分别用于表示汇款和收款。 2 创建DAO层接口实现类 在项目的 src 目录下创建一个名为 com.mengma.dao.impl 的包在该包下创建实现类 AccountDaoImpl如下所示。 package com.mengma.dao.impl;import org.springframework.jdbc.core.JdbcTemplate; import com.mengma.dao.AccountDao;public class AccountDaoImpl implements AccountDao {private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate jdbcTemplate;}// 汇款的实现方法public void out(String outUser, int money) {this.jdbcTemplate.update(update account set money money-? where username ?, money, outUser);}// 收款的实现方法public void in(String inUser, int money) {this.jdbcTemplate.update(update account set money money? where username ?, money, inUser);} }上述代码中使用 JdbcTemplate 类的 update() 方法实现了更新操作。 5. 实现 Service 1 创建 Service 层接口 在项目的 src 目录下创建一个名为 com.mengma.service 的包在该包下创建接口 AccountService如下所示。 package com.mengma.service;public interface AccountService {// 转账public void transfer(String outUser, String inUser, int money); }2 创建 Service 层接口实现类 在项目的 src 目录下创建一个名为 com.mengma.service.impl 的包在该包下创建实现类 AccountServiceImpl如下所示。 package com.mengma.service.impl;import com.mengma.dao.AccountDao;public class AccountServiceImpl {private AccountDao accountDao;public void setAccountDao(AccountDao accountDao) {this.accountDao accountDao;}public void transfer(String outUser, String inUser, int money) {this.accountDao.out(outUser, money);this.accountDao.in(inUser, money);} }上述代码中可以看出该类实现了 AccountService 接口并对转账的方法进行了实现根据参数的不同调用 DAO 层相应的方法。 6. 创建 Spring 配置文件 在项目的 src 目录下创建 Spirng 配置文件 applicationContext.xml编辑后如下所示。 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:txhttp://www.springframework.org/schema/txxmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.5.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.5.xsd!-- 加载properties文件 --context:property-placeholder locationclasspath:c3p0-db.properties /!-- 配置数据源读取properties文件信息 --bean iddataSource classcom.mchange.v2.c3p0.ComboPooledDataSourceproperty namedriverClass value${jdbc.driverClass} /property namejdbcUrl value${jdbc.jdbcUrl} /property nameuser value${jdbc.user} /property namepassword value${jdbc.password} //bean!-- 配置jdbc模板 --bean idjdbcTemplate classorg.springframework.jdbc.core.JdbcTemplateproperty namedataSource refdataSource //bean!-- 配置dao --bean idaccountDao classcom.mengma.dao.impl.AccountDaoImplproperty namejdbcTemplate refjdbcTemplate //bean!-- 配置service --bean idaccountService classcom.mengma.service.impl.AccountServiceImplproperty nameaccountDao refaccountDao //bean!-- 事务管理器依赖于数据源 --bean idtxManagerclassorg.springframework.jdbc.datasource.DataSourceTransactionManagerproperty namedataSource refdataSource //bean!-- 编写通知对事务进行增强通知需要编写切入点和具体执行事务的细节 --tx:advice idtxAdvice transaction-managertxManagertx:attributes!-- 给切入点方法添加事务详情name表示方法名称*表示任意方法名称propagation用于设置传播行为read-only表示隔离级别是否只读 --tx:method namefind* propagationSUPPORTSrollback-forException /tx:method name* propagationREQUIRED isolationDEFAULTread-onlyfalse //tx:attributes/tx:advice!-- aop编写让Spring自动对目标生成代理需要使用AspectJ的表达式 --aop:config!-- 切入点 --aop:pointcut expressionexecution(* com.mengma.service.*.*(..))idtxPointCut /!-- 切面将切入点与通知整合 --aop:advisor pointcut-reftxPointCut advice-reftxAdvice //aop:config /beans上述代码中首先在 标记的第 6、13 和 14 行代码分别添加了 AOP 所需的命名空间声明。第 4250 行代码使用 tx:advice 标记配置事务通知内容。 第 5258 行代码使用 aop:config 标记定义切面其中第 54 行代码应用了 AspectJ 表达式代表 com.mengma.service 包下所有类的所有方法都应用事务规则第 57 行代码使用 aop:advistor 标记将切入点与事务通知整合基于 AOP 的声明式事务配置完成。 7. 创建测试类 在项目的 src 目录下创建 com.mengma.test 的包在该包下创建测试类 AccountTest如下所示。 package com.mengma.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.mengma.service.AccountService; public class AccountTest {Testpublic void test() {// 获得Spring容器并操作String xmlPath applicationContext.xml;ApplicationContext applicationContext new ClassPathXmlApplicationContext(xmlPath);AccountService accountService (AccountService) applicationContext.getBean(accountService);accountService.transfer(zhangsan, lisi, 100);} }上述代码中模拟了银行转账业务从 zhangsan 的账户向 lisi 的账户中转入 100 元。使用 JUnit 测试运行 test() 方法运行成功后查询 account 表如下图所示。 从查询结果中可以看出zhangsan 成功向 lisi 转账 100 元。 下面通过修改案例模拟转账失败的情况在的 transfer() 方法中添加一行代码“int i1/0”模拟系统断电的情况具体代码如下所示 public void transfer(String outUser, String inUser, int money) {this.accountDao.out(outUser, money);//模拟断电int i 1/0;this.accountDao.in(inUser, money); }重新测试运行 test() 方法JUnit 控制台输出的信息如下图所示。 从输出结果可以看出在执行测试方法时出现了除以 0 的异常信息。此时再次查询 account 表其查询结果如下图所示。 从查询结果中可以看出表中的数据并没有发生变化。由于程序在执行过程中抛出了异常事务不能正常被提交所以转账失败。由此可知Spring 的事务管理生效了。
http://www.pierceye.com/news/482616/

相关文章:

  • 网站优化工作怎么样无网站无产品链接如何做SOHO
  • 移动网站建设方案小型手机网站建设
  • 小学校园网站建设方案吉林关键词优化的方法
  • 网站导航条只做公司网站方案
  • 网站如何宣传网站建设难点是什么
  • 重庆网站网络推广推广制作app的软件手机版
  • 西安学校网站建设多少钱网站icp备案是什么
  • 蛇口网站建设做新房什么网站好
  • 网站开发怎么找客户网站制作哪个好薇
  • 腾讯云wed服务器做网站360优化大师下载官网
  • 网站建设与管理案例教程第三版课后答案一线互联网公司有哪些
  • 微信网站后台徐州网
  • 做网站 用 显示器电话外呼系统
  • 广西房地产网站建设月夜直播视频免费观看
  • 建网站要甘肃省住房与建设厅网站首页
  • 淘宝客推广网站怎么做审计局网站建设管理
  • 能源企业 网站建设微信公众号官方平台
  • 网站建设需求登记表 免费下载开发一个app的注意事项
  • 网站跟域名是什么关系城乡建设部网站 挂证
  • 做理财网站赣州哪里可以做网站
  • 网站收益长寿做网站的电话
  • 网站推广的方式和管理方法公司注册核名
  • 帮人做钓鱼网站以及维护东莞住建局官网网站
  • 如何在百度里做推广网站个人怎样注册一家公司
  • 上海移动端网站建设西安专业做网站公司
  • 水果网站建设的策划书wordpress会员邮件通知
  • 合肥在线网站百色建设局网站
  • 梅河口市建设局网站华为网站搭建
  • gta5卖公司显示网站正在建设中公司网站制作有哪些
  • 免费推广网站大全下载c 视频播放网站开发