`
高级java工程师
  • 浏览: 409152 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

声明事务2种方式

阅读更多
spring声明式事务管理的两种方式


传统的:

1 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

2         <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />

3         <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:dev" />

4         <property name="username" value="kaktos" />

5         <property name="password" value="kaktos" />

6     </bean>

7

8     <bean id="txManager"

9         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

10         <property name="dataSource" ref="dataSource" />

11     </bean>

12

13     <bean id="businessBean"

14         class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

15         <property name="transactionManager" ref="txManager" />

16         <property name="target" ref="businessBeanTarget" />

17         <property name="transactionAttributes">

18             <props>               

19                 <prop key="*">PROPAGATION_REQUIRED</prop>

20             </props>

21         </property>

22     </bean>

23    

24     <bean id="businessBeanTarget" class="sample.spring.trans.BusinessBean">

25         <property name="dataSource" ref="dataSource" />

26     </bean>

这样做的弊端就是不得不为每个需要事务的bean做一次声明,如果所有的bean都基本上有一致的配置,这样就太繁琐啦。

下面是第二种方式:

1 <beans>

2     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

3         <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />

4         <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:dev" />

5         <property name="username" value="kaktos" />

6         <property name="password" value="kaktos" />

7     </bean>

8

9     <bean id="txManager"

10         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

11         <property name="dataSource" ref="dataSource" />

12     </bean>

13

14     <bean id="matchAllWithPropReq"

15         class="org.springframework.transaction.interceptor.MatchAlwaysTransactionAttributeSource">

16         <property name="transactionAttribute" value="PROPAGATION_REQUIRED" />

17     </bean>

18    

19     <bean id="matchAllTxInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">

20         <property name="transactionManager" ref="txManager" />

21         <property name="transactionAttributeSource" ref="matchAllWithPropReq" />

22     </bean>

23

24     <bean id="autoProxyCreator"

25         class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

26         <property name="interceptorNames">

27             <list>

28                 <idref local="matchAllTxInterceptor" />

29             </list>

30         </property>

31         <property name="beanNames">

32             <list>

33                 <idref local="businessBean" />

34             </list>

35         </property>

36     </bean>

37    

38     <!--  my beans  -->

39     <bean id="businessBean" class="sample.spring.trans.BusinessBean">

40         <property name="dataSource" ref="dataSource" />

41     </bean>

42 </beans>

分享到:
评论

相关推荐

    spring声明事务的配置

    1. **Spring 1.x 声明事务方式** 在Spring 1.x中,声明式事务有两种主要的配置方式,第一种是通过XML配置逐个为每个业务类创建事务代理。首先,你需要声明一个事务管理器,如`HibernateTransactionManager`,然后...

    spring声明式事务管理配置方式

    在Spring框架中,声明式事务管理是实现事务处理的一种高效且灵活的方式,它允许开发者通过在服务层方法上添加特定的注解来控制事务的边界,而无需编写大量的事务管理代码。这种方式使得业务逻辑和事务控制得以分离,...

    Spring中的四种声明式事务的配置

    Spring也可以使用AspectJ的切面来声明事务,这种方式需要启用AspectJ的编译时或加载时织入。在`applicationContext.xml`中添加以下配置: ```xml ``` 然后在需要事务管理的类上使用`@Transactional`注解。这种...

    实验 spring 声明事务

    实验 "Spring 声明事务" 是 Java 高级编程中的一个重要环节,旨在让学生掌握 Spring 框架中声明式事务管理的配置和使用。在实际应用中,事务管理是确保数据一致性、完整性和可靠性的关键组件。Spring 提供了声明式...

    Xml文件配置实现声明式事务管理

    4. **使用注解**:虽然这里我们主要讨论XML配置,但Spring同样支持在方法上使用`@Transactional`注解来声明事务,这在许多情况下更加方便。 总结,通过XML配置实现的声明式事务管理是Spring框架的一个强大特性,它...

    声明式事务处理 SSh

    自Spring 2.5起,我们可以直接在服务层的接口或实现类的方法上使用@Transactional注解来声明事务。注解提供了与XML配置类似的属性,如`propagation`、`rollbackFor`和`noRollbackFor`。这种方式更加直观,便于代码...

    Spring事务配置的五种方式

    使用Java的注解,如`@Transactional`,可以直接在业务方法上声明事务属性,无需在XML中配置。这种方式需要开启Spring的注解驱动事务管理,例如: ```xml ``` 然后在业务类中: ```java @Service public ...

    spring声明式事务配置

    声明式事务管理是一种简化事务管理的方式,它允许开发人员通过配置而非编程来指定事务边界,从而减少了代码的复杂性并提高了可维护性。 ### 标题解读:Spring声明式事务配置 Spring框架提供了两种主要类型的事务...

    Spring事务管理4种方式

    2. **声明式事务管理**:这是Spring最常用的方式,通过在配置文件或注解中声明事务属性,由Spring自动进行事务的生命周期管理。声明式事务分为基于XML配置和基于注解两种: - XML配置: ```xml *" ...

    Spring声明式事务处理

    Spring框架的声明式事务处理是Java企业级应用中不可或缺的一部分,它为开发者提供了一种方便、高效的方式来管理事务。在Spring中,事务管理分为编程式和声明式两种方式,而声明式事务处理则是通过配置来控制事务的...

    spring+mybatis的声明式事务

    Spring提供两种事务管理方式:编程式事务管理和声明式事务管理。编程式事务管理通过编写代码来控制事务的开始、提交、回滚等操作,灵活性高但侵入性强。相比之下,声明式事务管理则更加简洁,它通过配置或注解来...

    详细说明spring事务配置的5种方式

    最后一种方式是使用`TransactionTemplate`,它是一个便捷工具,允许你在代码中声明事务边界,但比编程式事务管理更简洁。`TransactionTemplate`封装了`PlatformTransactionManager`,你可以通过`execute`方法传递一...

    使用Spring的声明式事务----Annotation注解方式

    在Spring中,我们可以使用XML配置文件来声明事务,但更常见的是通过Java注解来完成。这里我们将重点讨论Annotation注解方式。主要涉及的注解有`@Transactional`,`@Rollback`以及`@Transactional(propagation=...

    使用Spring的声明式事务----AOP方式

    2. 注解配置:使用@Transactional注解直接在类或方法上声明事务属性。例如: ```java @Transactional(propagation = Propagation.REQUIRED) public class UserService { public void saveUser(User user) { // ...

    Spring声明式事务配置管理方法

    7. **声明式事务的四种配置方式**: - XML配置:如上所示,通过`&lt;tx:advice&gt;`和`&lt;aop:config&gt;`标签进行配置。 - @Transactional注解:在方法或类级别使用,声明方法属于哪个事务范围。 - AspectJ注解驱动:结合...

    全面分析_Spring_的编程式事务管理及声明式事务管理.

    此外,我们还可以使用`@Transactional`注解在方法级别声明事务属性,如 propagation(传播行为)、isolation(隔离级别)、timeout(超时时间)和rollbackFor(回滚异常类型)。 3. 事务的传播行为: 传播行为决定...

    spring声明式事务处理demo

    首先,我们要理解Spring事务管理的两种主要方式:编程式事务管理和声明式事务管理。编程式事务管理通常通过AOP(面向切面编程)的TransactionTemplate或PlatformTransactionManager接口直接在代码中控制事务,而声明...

    spring配置事务五种方式.doc

    这是最常见的声明式事务管理方式,通过在XML配置文件中指定哪些方法需要事务管理。例如: ```xml *" propagation="REQUIRED"/&gt; ``` 这将为MyServiceImpl中的所有方法开启事务,propagation属性指定了事务...

    全面分析 Spring 的编程式事务管理及声明式事务管理

    本文将全面分析Spring中的编程式事务管理和声明式事务管理,旨在帮助开发者深入理解这两种事务管理方式,并在实际项目中合理选择。 **编程式事务管理** 编程式事务管理是通过代码直接控制事务的开始、提交、回滚等...

    基于java的企业级应用开发:声明式事务管理.ppt

    本篇内容主要涉及两种声明式事务管理方式:基于XML和基于Annotation。 1. **基于XML的声明式事务管理** 这种方式是通过在Spring的配置文件中使用`&lt;tx:advice&gt;`元素来定义事务规则。`&lt;tx:advice&gt;`是事务增强处理的...

Global site tag (gtag.js) - Google Analytics