Spring事务管理器的配置和使用
来源:互联网 发布:linux下删除ftp用户 编辑:程序博客网 时间:2024/05/29 04:36
Spring事务管理器的配置和使用
1.为什么要配置spring事务管理器。
在将spring和hibernate结合之后,我们需要将事务管理交给spring管理。以保证数据的安全型,避免脏数据的出现。通过spring注入来完成此功能。
步骤1:在spring的配置文件中配置事务管理器
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"></bean>步骤2:配置完事务管理器,需要给事务管理器加上各种参数。
<!-- 哪些方法需要Spring开启事务transaction-manager="transactionManager":指定事务管理器通知类型:Spring帮我们写好 --><tx:advice transaction-manager="transactionManager" id="txAdvice"><tx:attributes><!--REQUIRED:需要开启事务 rollback-for:抛出哪些异常需要Spring回滚name="save*":以save开头的要开启事务rollback-for:抛出哪类异常(以及子类)的时候,Spring事务回滚,默认是RunTimeException --><tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/><tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/><tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception"/><!--其它方法,只能读 --><tx:method name="*" read-only="true"/></tx:attributes></tx:advice>步骤3:指定那些类执行事务管理器,,可以将事务管理器也理解成一种通知类型。(通知类型可以理解成就是拦截器,配置及使用参照)一般来说都是放在Service层,因为放在Dao层来说,Dao层每次都是执行一条sql成功与否对其他的sql没影响。但是放到Service层当一条sql语句出现错误时,事务回滚
<!-- 配置AOP,目的:哪些类里面的哪些方法执行事务管理器 --> <aop:config> <!-- 定义哪些类执行事务管理器 推荐放到实现类上面(Service) --> <aop:pointcut expression="execution(* com.bjsxt.*.service.impl.*.*(..))" id="pointcut"/> <!-- 将事务管理器和横切面(pointcut)关联起来 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/> </aop:config>以上三步配置完成之后,运行项目你会发现tomcat会给你报
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in file [F:\workspace\ssh_demo\build\classes\spring\applicationContext_common.xml]: Invocation of init method failed; nested exception is org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]这段话的意思是说transactionManager我们配置的那个事务管理器找不到DataSource,我们需要将数据源也交给事务管理器
步骤4:配置数据源
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!-- 驱动 --><property name="driverClassName" value="com.mysql.jdbc.Driver"/><!-- url --><property name="url" value="jdbc:mysql://localhost:3306/ssh"/><!-- 用户名 --><property name="username" value="root"/><!-- 密码 --><property name="password" value="199464"/></bean>开启自动装备之后,开启自动装备transactionManager中的Datasource属性会被自动赋值。
完成以上操作,再执行就可以执行数据库的的增删改的错的了。
0 0
- Spring事务管理器的配置和使用
- spring的事务管理器的配置
- spring配置可以选择的事务管理器
- spring的annotation-driven配置事务管理器
- Spring-jdbc:事务管理器的使用
- spring事务管理器的源码和理解
- spring事务管理器的源码和理解
- Spring的事务管理器
- Spring的事务管理器
- Spring的事务管理器
- spring配置事务管理器,事务配置
- Spring 数据加载和事务管理器配置注释详解
- spring的annotation-driven配置事务管理器详解
- spring的annotation-driven配置事务管理器详解
- spring的annotation-driven配置事务管理器详解
- Spring的annotation-driven配置事务管理器详解
- spring的annotation-driven配置事务管理器详解
- spring的annotation-driven配置事务管理器详解
- MFC 对话框中显示系统当前时间
- fastdfs原理
- Retrofit2-如何在请求时使用动态URL
- keepalived
- MQTT 菜鸟日志记录
- Spring事务管理器的配置和使用
- android开发思维导图
- 随笔——码神
- 【好文收藏】Reactive Extensions入门
- 你有必要知道的25个JavaScript面试题
- yum安装php7.0可以改变yum源
- 单项散列加密
- Debug Assertion Failed! f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\winhand.cpp
- REMOTE_SUBMIX, AUDIO_DEVICE_OUT_REMOTE_SUBMIX, AUDIO_DEVICE_IN_REMOTE_SUBMIX含义