事务在系统服务启动的时候就加载了,一般的,我们把事务配在service层,利用service的业务逻辑借口统一的管理。为什么不用在dao层呢?因为一个service有可能调用多个dao,而这多个dao有可能相互联系,有时候一个操作需要调用多次数据库,但是这多次调用要么全提交,要么全回滚。因此,在dao层调用事务理论上说不是一个很明智的选择。应该有业务逻辑层service层负责事务,统一处理。具体事务配置的代码如下:
<!-- Transaction template for Managers -->
<bean id="txProxyTemplate" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes">
<props>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
其中update*表示service层中的方法以update开头的所有方法,没有readOnly标示的标识该操作可以修改数据库,否则该方法不能操作数据库,只能进行类似查询的功能。最后一个*代表除了以上所有的方法外的其它方法。
这个调用事务的类是一个抽象类,因此在自己具体实现的类里面如果需要配置事务,只要声明一下就可以了。另外,也可以覆盖该方法,修改属于自己业务模块的方法名的读写数据库的操作权。具体代码如下:
<bean id="fileManager" parent="txProxyTemplate">
<property name="target">
<bean class="com.mycore.filemanager.service.impl.FileManagerImpl" autowire="byName">
</bean>
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
这样就配置ok了,在自己的实现类里面如果企图在不能修改数据库的方法里面修改数据库,spring会报出该方法是只读的一个异常。
分享到:
相关推荐
### Spring事务配置的五种方式详解 #### 一、引言 在企业级应用开发中,事务处理是非常重要的一部分,特别是在涉及多个数据库操作时。Spring框架提供了强大的事务管理功能,支持编程式和声明式两种事务处理方式。...
本文将详细介绍Spring事务配置的五种方式,帮助你深入理解如何在Spring应用中管理事务。 1. **基于XML的声明式事务管理** 第一种方式是在每个Bean上使用代理来实现事务管理。首先,配置`DataSource`,通常是`...
下面是五种Spring事务配置方式的详细说明: **第一种方式:基于代理的声明式事务管理** 在这个配置中,每个业务对象(如DAO)都有一个事务代理。`TransactionProxyFactoryBean`被用来创建这个代理,它需要指定事务...
以下是对Spring声明式事务配置的详细说明: 1. **Spring 1.x 声明事务方式** 在Spring 1.x中,声明式事务有两种主要的配置方式,第一种是通过XML配置逐个为每个业务类创建事务代理。首先,你需要声明一个事务管理...
### Spring 事务配置的五种方法详解 #### 一、引言 在现代软件开发过程中,事务处理是一项至关重要的技术,特别是在涉及数据库操作时。Spring 框架提供了丰富的事务管理功能,支持多种不同的配置方式来满足不同...
以下是关于Spring声明式事务配置管理的详细说明: 1. **事务管理器配置**: 在`/WEB-INF/applicationContext.xml`文件中,我们需要定义一个事务管理器Bean。通常,对于Hibernate,我们会使用`...
7. **AOP事务配置**:接下来,我们需要在Spring中配置AOP事务规则,定义哪些方法需要在事务中执行。通常使用`@Transactional`注解,但要在配置文件中开启注解驱动的事务管理。 ```xml ``` 8. **使用示例**:在...
描述部分进一步说明了事务失效的后果往往不明显,容易在测试环节被忽略,但在生产环境中出现问题,暴露了开发者对Spring事务机制不足够了解的问题。标签“Spring 事务 失效”直接概括了本文的知识点范围,即Spring...
在Spring框架中,事务管理是确保数据库操作的一致性和完整性的...总的来说,选择哪种事务配置方式取决于项目需求、团队习惯以及对事务控制粒度的要求。通常情况下,声明式事务管理因其简洁和易于维护性而被广泛采用。
本文详细介绍了Hibernate与Spring集成过程中涉及的关键配置,包括数据源、SessionFactory、事务管理器以及事务代理工厂的配置细节。通过这些配置,可以实现对数据库的高效访问,并利用Spring的事务管理机制来简化...
### Spring 1.2 的 JDBC 配置详解 在 Spring 框架 1.2 版本中,...通过上述详细的配置,Spring 1.2 能够有效地管理数据库连接、事务处理以及业务逻辑层的操作,极大地简化了开发工作并提高了代码的可维护性和扩展性。
本文将详细介绍五种常见的Spring事务配置模式,并结合具体的配置示例进行说明。 #### 一、每个Bean都有一个代理 这种方式是最直接也是最简单的配置方法。它通过为每个需要事务支持的Bean创建一个代理来实现。这种...
Spring会自动检测到`jotm.properties`配置文件,并自动配置JOTM作为事务管理器。`carol.jar`没有明确的说明,但可能是某个特定项目或库的依赖,可能与JOTM或其他组件有关。 `junit-4.8.1.jar`是JUnit测试框架的版本...
3. **Hibernate事务配置:**在Spring中,需要配置Hibernate SessionFactory,并将其注入到需要进行数据库操作的服务中。同时,通过`PlatformTransactionManager`接口(如HibernateTransactionManager)配置事务管理...
然后,为了使 MyBatis 能够正常工作,我们需要创建一个 `mybatis-config.xml` 配置文件,通常放在 `src/main/resources` 目录下,用于定义 SQL 映射文件的位置、事务管理器等: ```xml ``` 接着,创建对应...
NULL 博文链接:https://lizhao6210-126-com.iteye.com/blog/1958831
以下是对"struct和spring整合的配置"的详细说明: 一、整合目的 整合Spring和Struts的主要目的是为了实现更好的业务逻辑管理、依赖注入以及提高代码的可测试性。通过Spring管理Struts中的Action类,可以避免在...
2. AOP(面向切面编程):Spring.NET提供了AOP支持,允许开发者定义横切关注点(如日志、事务管理等),并将其与业务逻辑分离,提高了代码的可重用性和可维护性。 3. 数据访问支持:Spring.NET集成了多种数据访问...