天天看点

Spring MVC 事务配置Spring MVC事务配置

要了解事务配置的所有方法,请看一下》

本文介绍两种配置方法:

以下所使用环境为Spring4.0.3、Hibernate4.3.5

Entity类User.java,持久化类,对应数据库表user

UserDAO.javar,表user的一些操作,其中属性sessionFactory应该由Spring注入,如下:

UserService.java,业务实现类,如下

首先看一下xml配置,spring-hibernate.xml如下:

其中主要配置中是tx:advice和aop:config两个配置节,以Spring

AOP的方式实现事务管理。

tx:advice配置了事务的管理者是transactionManager,同时tx:method也规定了如果方法名匹配“add*”和“get*”方法时使用事务,propagation是设定事务的传播级别。除了“add*”和“get*”方法,其他的方法的事务是只读的(典型地,对于只执行查询的事务你会将该属性设为true,如果出现了更新、插入或是删除语句时只读事务就会失败)

aop:config指定了一个aop:pointcut去引用上边的advice。

这样就通过AOP的拦截机制实现了事务,当然你还要用Spring的方式自己配置UserDAO和UserService。

第一步,首先看一下web.xml,如下:

第二步,spring-hibernate配置,见以下spring-hibernate.xml配置

第一节中xml配置事务中需要通过配置tx:advice和aop:config来增加事务的功能。此处采用全注释方法,这两个配置节就不需要了。

相应的需要在视图解析配置中启用注释,如下lei-dispatcher-servlet.xml

UserDAO如下

UserService.java如下

这里,方法名userCount上加入@Transactional,说明这个方法要启用事务。如果类名UserService上加入@Transactional,则表明这个类中的所有方法都会启用事务。

如果配有多个transactionManager,例如配置有transactionManager1,和transactionManager2,则可以通过@Transactional(“transactionManager1”),的方式指定使用哪个数据源的事务。

源代码下载: