事务配置_SSH(五)- 使用注解方式配置事务管理
步骤1:修改applicationContext.xml步骤2:为ProductServiceImpl 添加注解步骤3:测试步骤4:MYSQL 表的类型必须是INNODB才支持事务
步骤 1 : 修改applicationContext.xml
在SSH 通过XML 配置事务管理 的基础上,修改applicationContext.xml文件.
1. 去掉<tx:advice和 <aop:config 配置
2. 保留<bean id="transactionManager" ...>
3. 添加<tx:annotation-driven transaction-manager="transactionManager"/> 用于进行注解扫描<?xml
version="1.0"
encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean
name="productActionBean"
class="com.how2java.action.ProductAction">
<property
name="productService"
ref="productServiceImpl"
/>
</bean>
<bean
name="productServiceImpl"
class="com.how2java.service.impl.ProductServiceImpl">
<property
name="productDAO"
ref="productDAOImpl"
/>
</bean>
<bean
name="productDAOImpl"
class="com.how2java.dao.impl.ProductDAOImpl">
<property
name="sessionFactory"
ref="sf"
/>
</bean>
<bean
name="sf"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property
name="dataSource"
ref="ds"
/>
<property
name="mappingResources">
<list>
<value>com/how2java/pojo/Product.hbm.xml</value>
</list>
</property>
<property
name="schemaUpdate">
<value>true</value>
</property>
<property
name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show_sql=true
hbm2ddl.auto=update
</value>
</property>
</bean>
<bean
name="ds"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property
name="driverClassName"
value="com.mysql.jdbc.Driver"
/>
<property
name="url"
value="jdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8"/>
<property
name="username"
value="root"
/>
<property
name="password"
value="admin"
/>
</bean>
<!-- 配置事务管理器(声明式的事务) -->
<bean
id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property
name="sessionFactory"
ref="sf"></property>
</bean>
<tx:annotation-driven
transaction-manager="transactionManager"/>
</beans>
步骤 2 : 为ProductServiceImpl 添加注解
在ProductServiceImpl 的list方法前加一句:@Transactional(propagation=Propagation.REQUIRED,rollbackForClassName="Exception")
表示这个方法要进行事务管理。
没了~package
com.how2java.service.impl;
import
java.util.List;
import
org.springframework.transaction.annotation.Propagation;
import
org.springframework.transaction.annotation.Transactional;
import
com.how2java.dao.ProductDAO;
import
com.how2java.pojo.Product;
import
com.how2java.service.ProductService;
public
class
ProductServiceImpl
implements
ProductService {
ProductDAO productDAO;
@Transactional(propagation=Propagation.REQUIRED,rollbackForClassName="Exception")
public
List<Product> list() {
List<Product> products= productDAO.list();
if(products.isEmpty()){
for
(int
i =
0; i <
5; i++) {
if(i==2)
throw
new
RuntimeException();
Product p =
new
Product();
p.setName("product "
+ i);
productDAO.add(p);
products.add(p);
}
}
return
products;
}
public
ProductDAO getProductDAO() {
return
productDAO;
}
public
void
setProductDAO(ProductDAO productDAO) {
this.productDAO = productDAO;
}
}
步骤 3 : 测试
删除product_表中数据,重启tomcat,访问页面:http://127.0.0.1:8080/ssh/listProduct
即可观察到不断地抛出异常,不会插入数据。
![](/assets/blank.gif)
步骤 4 : MYSQL 表的类型必须是INNODB才支持事务
在Mysql中,只有当表的类型是INNODB的时候,才支持事务,所以需要把表的类型设置为INNODB,否则无法观察到事务.
修改表的类型为INNODB的SQL:alter table product_ ENGINE = innodb;
查看表的类型的SQLshow table status from how2java;
不过有个前提,就是当前的MYSQL服务器本身要支持INNODB,如果不支持,请看 开启MYSQL INNODB的办法
更多内容,点击了解: https://how2j.cn/k/ssh/ssh-transaction-annotation/1077.html
事务配置_SSH(五)- 使用注解方式配置事务管理相关推荐
- java datasource 配置_Spring boot 基于注解方式配置datasource
Spring boot 基于注解方式配置datasource Xml配置 我们先来回顾下,使用xml配置数据源. 步骤: 先加载数据库相关配置文件; 配置数据源; 配置sqlSessionFactor ...
- atitit.ajax bp dwr 3.的注解方式配置使用流程总结.....
atitit.ajax bp dwr 3.的注解方式配置使用流程总结..... 1. 下载 dwr.jar 1M 1 2. 配置注解方式..web.xml 1 3. Class 配置 2 4. 测试 ...
- Hibernate实体映射配置1(java@注解方式)
实体和数据库之间存在某种映射关系,hibernate根据这种映射关系完成数据的存取.在程序中这种映射关系由映射文件(*.hbm.xml)或者java注解(@)定义. 本文以java注解的形式总结映射关 ...
- SSH深度历险(十一) AOP原理及相关概念学习+xml配置实例(对照注解方式的优缺点)...
接上一篇 SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP,本篇我们主要是来学习使用配置XML实现AOP 本文採用强制的CGLB代理方式 Security ...
- spring AOP自定义注解方式实现日志管理
转:spring AOP自定义注解方式实现日志管理 今天继续实现AOP,到这里我个人认为是最灵活,可扩展的方式了,就拿日志管理来说,用Spring AOP 自定义注解形式实现日志管理.废话不多说,直接 ...
- Spring 使用注解方式进行事物管理
Spring 使用注解方式进行事物管理 大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅. 事物注解方式: @Transaction ...
- Spring AOP注解方式实现日志管理
文章目录 自定义注解 BussLog BussLogAspect 前言:使用注解方式实现日志管理,可以使我们的程序变的清晰.简单,不和很多业务代码混在一起. 实现思路大致分为四点 设计日志表和日志类, ...
- Spring 注解方式实现 事务管理
2019独角兽企业重金招聘Python工程师标准>>> 使用步骤: 步骤一.在spring配置文件中引入<tx:>命名空间 <beans xmlns="h ...
- ssm注解配置连接mysql_基于注解和配置类的SSM(Spring+SpringMVC+Mybatis)项目详细配置...
在上一篇文章中介绍了使用注解和xml配置文件对项目进行配置,在这篇文章中将xml配置文件中的配置信息都改成使用注解或者配置类的形式. 第一步.配置pom.xml 在一个ssm项目中,可能需要用到的依赖 ...
- 注解mysql事物管理_Spring 使用注解方式进行事务管理
事务的传播行为和隔离级别 大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅. 事物注解方式: @Transactional 当标于类 ...
最新文章
- eclipse工程中查看android源码
- 双花证明已实现,BCH安全的0确认交易还远吗?
- 随堂小测app冲刺(六)
- 8月21日至8月27日技术积累
- SlideringDrawer的使用(抽屉效果)
- su: user tomcat does not exist
- 如何在命令行中使用jq将JSON转换为CSV
- 数据库高级知识——mysql架构介绍(二)
- 为tornado自定义session
- vbs连接oracle11,vbs连oracle数据库
- django请求和响应
- java 文件下载 组件_java文件夹上传下载组件
- Abseil之string_view
- pbcmc包的介绍(根据生信技能树Jimmy老师分享的乳腺癌分子分型包资料整理)
- PyQt5 QThread应用
- 使用c语言实现数组连接
- 博通linux网卡驱动,在64位CentOS 6 系统上安装Broadcom网卡驱动
- 学习商业汇票 ---- 银承汇票业务
- iPhone 14 电池耗电怎么样?iPhone 14和13比对那个续航好?
- 360oauth token是什么意思_京东开放服务平台(JOS)关于token问题汇总(一)
热门文章
- 【问题解决】移动端rem适配的时候会出现打开页面时先缩小(放大)后恢复到正常页面的问题
- 解决Http响应内容中文乱码问题
- [异常解决] 安卓6.0权限问题导致老蓝牙程序出现异常解决办法:Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission...
- Socket java.net.SocketException: Connection reset的解决方案
- Spring MVC报异常:org.springframework.web.util.NestedServletException: Request processing failed
- 使Git与代理服务器一起使用-因“请求超时”而失败
- 让服务器apache/iis/nginx支持.apk/ipa文件下载
- RHEL6基础四十三之RHEL文件共享②Samba简介
- Objective-C 2.0属性(Property)介绍
- 配置Cisco ASA and Cisco *** Client 4.x with Windows 2003 IAS RADIUS Authentication