Spring中事务配置以及事务不起作用可能出现的问题

栏目: Java · 发布时间: 6年前

内容简介:Spring中事务配置以及事务不起作用可能出现的问题

前言:在Spring中可以通过对方法进行事务的配置,而不是像原来通过手动写代码的方式实现事务的操作,这在很大程度上减少了开发的难度,本文介绍Spring事务配置的两种方式:基于配置文件的方式和基于注解的方式。并对配置过程中可能出现的问题作出总结。

一、基于配置文件的方式,具体如下:

<context:component-scan base-package="com.learning"/>

<!-- c3p0连接池配置--><!--注意最好是加上编码的设置,并注意在xml文件中&需要进行转义,通过&amp;进行转义-->

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"

destroy-method="close"

p:driverClass="com.mysql.jdbc.Driver"

p:jdbcUrl="jdbc:mysql://localhost:3306/springlearning?useUnicode=true&amp;characterEncoding=UTF-8"

p:user="root"

p:password=""/>

<!-- 配置jdbcTemplate模板-->

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"

p:dataSource-ref="dataSource"/>

<!-- 事务配置 3步,比较固定,注意数据库的引擎,是否支持事务-->

<!--MySql默认数据引擎为MyISAM,是不支持事务,需改成InnoDB才能进行事务的操作-->

<!-- 1.配置事务,开启spring的事务管理-->

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"

p:dataSource-ref="dataSource"/>

<!-- 2.然后配置事务的增强-->

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<!-- 做事务操作-->

<tx:attributes>

<!-- 设置进行事务操作的方法匹配规则,就是对什么方法进行事务操作,这里可以直接写方法名,也可以直接写*,表示对所有方法开启事务支持-->

<tx:method name="*"/>

</tx:attributes>

</tx:advice>

<!-- 3.然后配置切面-->

<aop:config>

<!-- 切入点-->                                  <!--service包下,所有类中的所有方法都设置为切入点-->

<aop:pointcut id="servicePointcut" expression="execution(* com.learning.service..*(..))"/>

<!-- 切面-->

<aop:advisor advice-ref="txAdvice" pointcut-ref="servicePointcut"/>

</aop:config>

注:配置文件中,对相应步骤都有详细说明,主要分三步:1.配置事务管理;2.配置事务增强;3.进行切面配置。

二、基于配置文件的方式

<!-- 开启注解扫描-->

<context:component-scan base-package="com.learning"/>

<!-- c3p0连接池配置-->

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"

destroy-method="close"

p:driverClass="com.mysql.jdbc.Driver"

p:jdbcUrl="jdbc:mysql://localhost:3306/springlearning?useUnicode=true&amp;characterEncoding=UTF-8"

p:user="root"

p:password=""/>

<!-- 配置jdbcTemplate模板-->

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"

p:dataSource-ref="dataSource"/>

<!--基于注解的方式,在配置文件中只需两步-->

<!-- 1.配置事务,开启spring的事务管理-->

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"

p:dataSource-ref="dataSource"/>

<!--2.开启事务注解扫描-->

<tx:annotation-driven transaction-manager="transactionManager"/>

注:基于注解的方式,在配置文件中只需两步:1.配置事务管理器(不管是基于配置文件方式或者注解方式,这一步都是必须的); 2.开启事务注解扫描;3.在需要进行事务操作方法的类名上添加注解@Transactional 通过以上3个步骤即可完成方式事务的开启,注意不要忘了在所需开启事务方法的类上添加注解哦。

Spring事务配置不起作用可能出现的问题:

1.是否是数据库引擎设置不对造成的【 笔者就遇到了这个问题,由于笔者使用的是 mysql 数据,但是在创建表的时候引擎默认(mysql中引擎默认为MyISAM,是不支持事务操作的 ),需要修改为InnoDB,就可以支持事务操作了

2.入口函数必须是public,否则事务不起作用。这一点由Spring的AOP特性决定的。

这就是笔者在配置事务过程中所遇到的问题,如再遇任何问题,则继续补充。

本文永久更新链接地址 http://www.linuxidc.com/Linux/2018-01/150262.htm


以上所述就是小编给大家介绍的《Spring中事务配置以及事务不起作用可能出现的问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

指数型组织

指数型组织

萨利姆•伊斯梅尔 (Salim Ismail)、迈克尔•马隆 (Michael S. Malone)、尤里•范吉斯特 (Yuri van Geest) / 苏健 / 浙江人民出版社 / 2015-8-1 / CNY 69.90

《指数型组织》是一本指数级时代企业行动手册。作者奇点大学创始执行理事萨利姆·伊斯梅尔归纳了指数型组织的11个强大属性,并提出了建立指数型组织的12个关键步骤。通过自己创建的一套“指数商”测试题,伊斯梅尔还测量出了指数型组织世界100强。  为什么小米、海尔和阿里巴巴能进入“指数型组织世界100强”名单?“独角兽”Uber、Airbnb、谷歌等知名企业是如何指数化自己的组织的?  未......一起来看看 《指数型组织》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具