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

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

内容简介: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中事务配置以及事务不起作用可能出现的问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Game Engine Architecture, Second Edition

Game Engine Architecture, Second Edition

Jason Gregory / A K Peters/CRC Press / 2014-8-15 / USD 69.95

A 2010 CHOICE outstanding academic title, this updated book covers the theory and practice of game engine software development. It explains practical concepts and techniques used by real game studios,......一起来看看 《Game Engine Architecture, Second Edition》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具