spring1的声明式事务配置:
<!-- 事务的处理 -->
<!-- Hibernate使用的事物管理器-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="jdbcTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="jdbcDataSource"></property>
</bean>
<!-- 事务处理代理的抽象类,可被继承使用-->
<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="create*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="confirm*">PROPAGATION_REQUIRED, -BetException</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="set*">PROPAGATION_REQUIRED</prop>
<prop key="do*">PROPAGATION_REQUIRED, -SettleException</prop>
<prop key="settle">PROPAGATION_REQUIRED, -Exception</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="jdbcTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager" ref="jdbcTransactionManager"></property>
<property name="transactionAttributes">
<props>
<prop key="refuseGaming">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
因为我们的事务一般都放在service层,ok 看下service是如何与上面的事务配置联系起来的
<bean id="matchService" parent="baseTransactionProxy">
<property name="target">
<bean class="com.airinbox.gamester.service.impl.MatchService">
<property name="matchDao">
<ref bean="matchHibernateDao" />
</property>
<property name="gamblingDao">
<ref bean="gamblingHibernateDao" />
</property>
<property name="teamDao">
<ref bean="teamHibernateDao" />
</property>
<property name="starDao">
<ref bean="starHibernateDao" />
</property>
</bean>
</property>
</bean>
ok,spring1.x事务配置完成,下面看spring2的配置简单了很多
<!--Hibernate TransactionManager-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 以AspectJ方式 定义 AOP -->
<aop:config >
<!-- 注意,请把第2个*号换为项目package 这里的写法可以参考spring手册 -->
<aop:advisor pointcut="execution(* *..service.*Manager.*(..))" advice-ref="txAdvice"/>
<aop:advisor pointcut="execution(* org.springside.core.dao.*Dao.*(..))" advice-ref="txAdvice"/>
</aop:config>
<!-- 基本事务定义,使用transactionManager作事务管理,默认get*方法的事务为readonly,其余方法按默认设置.
默认的设置请参考Spring文档事务一章. -->
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="find*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
是不是简单了很多!
分享到:
相关推荐
此外,事务管理功能也得到了优化,提供了一种声明式的方式处理事务,使得事务边界更加清晰,代码更易于维护。 Spring 4.x.x还引入了Spring Boot,这是一个用于简化Spring应用程序初始搭建以及开发过程的工具。通过...
3. **数据访问集成(Data Access Integration, DA/I)**:Spring提供了对各种持久层技术如JDBC、Hibernate、MyBatis等的集成,简化了数据库操作,并支持声明式事务管理。 4. **Web应用支持**:Spring MVC是Spring...
1. **依赖注入**:Spring通过DI机制,使得对象间的依赖关系在配置文件中声明,而不是硬编码在类内部,降低了代码的耦合度,提高了可测试性和可维护性。 2. **AOP**:AOP是Spring提供的用于实现横切关注点(如日志...
Spring 2.x版本的声明式事务配置模板是开发者常用的一种方式,它通过AOP(面向切面编程)实现事务的自动管理,使得开发者无需在业务代码中显式调用事务开始、提交或回滚等操作。下面我们将详细探讨Spring 2.x的声明...
3. **Spring事务管理**:Spring提供了声明式事务管理,开发者可以在配置文件中定义事务边界,无需在代码中显式处理事务开始、提交和回滚,简化了事务处理,同时保证了数据的一致性。 4. **Spring MVC**:Spring的...
4. **事务管理**:Spring提供了声明式事务管理,使得开发者无需手动处理事务,只需在配置中声明事务边界,提高了代码的可读性和可维护性。 5. **MVC Web框架**:Spring MVC是Spring提供的用于构建Web应用的模块,它...
事务管理方面,Spring 5.0.x支持编程式和声明式事务管理,并对事务回滚规则进行了优化。同时,Spring的TransactionTemplate提供了一种简单的方式在非控制器代码中管理事务。 在测试方面,Spring Test模块提供了丰富...
Spring支持编程式和声明式事务管理。在源码中,我们可以看到`PlatformTransactionManager`接口及其实现(如`DataSourceTransactionManager`)是如何控制事务的开始、提交、回滚等操作。同时,`@Transactional`注解的...
5. **AOP事务管理**:Spring的AOP支持可以用于声明式事务管理,只需在配置文件中声明,无需在业务代码中显式处理事务开始、提交或回滚。 6. **MVC框架**:Spring MVC是Spring提供的一个用于构建Web应用的模型-视图-...
它简化了事务管理,无论是编程式还是声明式的事务处理,都使得事务控制变得更加简单。 6. **Web应用支持**:Spring MVC是Spring提供的一个强大的MVC框架,用于构建Web应用。它提供了模型-视图-控制器架构,使得开发...
Spring框架提供了声明式事务管理的功能,通过Spring的事务抽象,可以实现声明式事务管理,而无需依赖于特定的事务管理API。在Spring3.X中,使用@Transactional注解可以非常容易地将事务管理应用于类和方法级别。 7....
6. **Spring事务管理**:Spring提供了强大的事务管理机制,无论是编程式还是声明式的事务管理,都能确保业务逻辑的完整性和一致性。 7. **Spring Boot**:虽然不在4.x版本范围内,但作为Spring的现代化启动器,...
书中将介绍如何配置数据源、声明式事务管理以及使用Spring Data进行数据访问对象(DAO)的简化。 企业级应用往往涉及到复杂的事务管理,Spring 3.x提供了强大的事务管理机制,包括编程式事务管理和声明式事务管理。...
Spring 4.x提供了声明式事务管理,开发者可以通过注解或XML配置来控制事务的边界,使得事务处理更加规范且易于维护。 Spring Boot是Spring 4.x时代的一个亮点,它极大地简化了Spring应用的启动和配置过程,提供了...
### 标题解读:Spring声明式事务配置 Spring框架提供了两种主要类型的事务管理方式:编程式事务管理和声明式事务管理。声明式事务管理通过XML配置或注解的形式定义事务边界,使得业务逻辑与事务控制分离。 ### ...
Spring的声明式事务管理能够将事务的边界定义在配置文件中,或者通过注解来实现。 4. 数据访问抽象:Spring提供了一套抽象数据访问框架,支持JDBC、ORM、OXM、JMS和事务管理。Spring通过模板类(如JdbcTemplate)...
在事务管理方面,Spring 4.x提供了声明式事务管理,让开发者无需编写复杂的事务控制代码。书中会讲解如何配置事务管理器,以及@Transactional注解的使用方法,帮助读者理解事务的ACID属性和隔离级别。 Spring AOP...
Spring提供了声明式事务管理,使得开发者无需在业务逻辑代码中显式处理事务,而是通过配置来指定事务边界。 7. **Bean工厂和ApplicationContext** Spring的Bean工厂是对象的容器,负责创建、初始化、配置和管理...
通过AOP,Spring可以实现声明式的事务管理,简化了事务处理的复杂性。 6. **MVC框架** Spring MVC是Spring提供的Web开发框架,它分离了模型、视图和控制器,使得Web应用的开发更加清晰和高效。Spring MVC通过...