声明意味着我们告知spring某个bean的某个方法需要事物管理,之后spring就会保证此方法被调用时,会有对应的事物贯穿其中。次实现方式完全依赖AOP对方法进行拦截。
声明式事务的最大好处在于我们无需修改既有代码。方法实现过程中,我们压根无需为其添加事务管理支持。
xml配置
//..省略
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref local="dataSource">
</property>
</bean>
<bean id="accountManagerTarget" class="xx路径">
<property name="xxDao">
<ref local="xx"/>
</property>
<property name="xxDao">
<ref local="xx"/>
</property>
</bean>
<bean id="accpuntManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="target">
<ref local="accountManagerTarget"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">
PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED
</prop>
<prop key="transfer*">
PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED
</prop>
<prop key="deposit*">
PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED
</prop>
</props>
</property>
</bean>
//..省略其他配置
我们定义了一个transactionmManager bean,实现位于DataSourceTransactionManager中。这个事务管理器需要通过dataSource bean对JDBC事务进行控制。我们的accountManager bean 实际上是accountManagerTarget的代理.代理负责对transactionmManager bean的调动,当transactionAttributes中定义的方法调用时,相应的代理通过transactionmManager 创建事务,然后调用对应的目标方法。如果目标方法抛出了一个异常,代理会驱动transaction对相应事务进行回滚。如果目标方法成功,则提交事务。
分享到:
相关推荐
- Spring 3.0引入了基于Java的配置,事务管理可以通过`@EnableTransactionManagement`注解开启,然后在配置类中使用`@Transactional`注解进行方法级别的事务配置,或者使用`@Configuration`和`@Bean`定义事务管理器...
在XML配置中,我们可以使用`<tx:advice>`元素来定义一个事务通知: ```xml *" propagation="REQUIRED"/> ``` 这里,`*`表示所有方法都将在`REQUIRED`事务传播策略下运行,即如果当前没有事务,则新建一...
在Spring框架中,声明式事务管理是其核心特性之一,它允许开发者通过配置或注解方式来声明事务的边界,而无需在业务代码中显式地进行事务控制。这种方式极大地提高了代码的可读性和可维护性,使得事务管理更加集中和...
在声明式事务配置中,我们需要在`<beans>`标签内添加`<tx:annotation-driven>`和`<bean>`标签来实现事务管理。 1. **事务管理器配置**:在`<bean>`标签中,我们通常会定义一个`PlatformTransactionManager`的实现类...
在这个声明式事务管理的小示例中,我们将探讨如何使用 Spring.NET 来实现事务的自动化处理。 1. **什么是声明式事务管理?** 声明式事务管理允许开发者通过配置或注解来定义事务的边界,而不是在代码中显式地调用 ...
在 Spring 中,声明式事务处理可以通过配置 TransactionProxyFactoryBean 来实现。TransactionProxyFactoryBean 是一个 FactoryBean,它可以创建一个代理对象,该代理对象可以拦截业务方法的调用,并对事务进行管理...
编程式事务管理是指在代码中显式地控制事务的开始、提交、回滚等操作,而声明式事务管理则是通过配置或注解来定义事务边界,更加简洁且易于维护。 标题"spring编程式事物"主要关注的是编程式事务管理。这种方式允许...
这种方式通过在XML配置文件中使用`<tx:advice>`和`<tx:method>`元素来配置事务属性。这种方式适用于那些需要细粒度控制事务的场景。 **配置示例**: ```xml <bean id="transactionManager" class="org.spring...
让我们深入探讨这些概念以及如何在Spring中实现声明式事务管理。 **1. Inversion of Control (IoC)** IoC,也称为依赖注入(Dependency Injection),是一种设计模式,它将对象的创建和管理权交给了框架,而不是由...
在本文中,我们将深入探讨如何实现动态数据源切换,支持Spring声明式事务管理,并讨论多数据源回滚策略。以下是对这些知识点的详细说明: 1. **动态数据源切换**: - 通过AspectJ实现数据源的动态切换,可以设置在...
编程式事务管理需要在代码中显式地管理事务开始、提交和回滚,而声明式事务管理则通过在配置或注解中声明事务规则,更加灵活且易于维护。例如,使用@Transactional注解可以轻松地为方法添加事务边界。 三、事务通知...
Spring提供了一种声明式事务管理方式,使得开发者可以在不直接编写事务控制代码的情况下,通过配置来管理事务的边界。在"spring的2个数据源的配置"中,这意味着系统可能需要处理来自两个不同数据源的数据,例如一个...
在`first_maven_project`中,我们可以通过查看源码,了解如何在实际应用中使用这个注解来处理事务,以及遇到异常时如何触发事务回滚。这有助于理解Spring事务管理机制的运作方式,从而提升开发和维护效率。
在配置文件中,注释应详细说明每个元素的作用,例如在Spring的配置文件中,`<tx:annotation-driven>`的`transaction-manager`属性指定哪个事务管理器处理事务,`proxy-target-class="true"`表示使用CGLIB代理而不是...
在Spring的XML配置文件中,可以在`<tx:annotation-driven>`元素下声明事务管理器,使得带有`@Transactional`注解的方法能够被事务管理。 ```xml (* com.bluesky.spring.service.*.*(..))"/> *" ...
Spring 事务管理也可以与AOP结合,通过`aop:config`标签定义切点和通知,来实现事务的声明式管理。这种方式更加灵活,可以实现更细粒度的事务控制。 在实际开发中,根据项目需求和团队习惯,可以选择适合的事务...
Spring的事务管理机制包括编程式事务管理和声明式事务管理,这两种方式都基于`spring-tx`模块。在这个源码中,我们可以深入理解Spring如何处理事务的生命周期、回滚规则以及与各种数据源的集成。 首先,`spring-tx`...
总结起来,"spring-控制事物回滚"涵盖的知识点包括Spring的声明式事务管理、事务的回滚规则、传播行为、隔离级别以及源码分析和相关工具的使用。理解和掌握这些内容,对于提升Java企业级应用开发的能力至关重要。
其中,声明式事务管理是通过在配置文件或注解中声明事务规则,使得事务管理更加简洁和易维护。 3.1 平台事务管理器(PlatformTransactionManager) `PlatformTransactionManager` 是 Spring 提供的核心事务管理...