基于Spring的DataSourceTransactionMananger类事务管理器配置声明式事务
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 使用spring注解 --> <!-- <context:annotation-config/> --> <!-- 下面的配置告诉spring容器自动scanner用注解标注bean --> <context:component-scan base-package="org.lian"/> <!--配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <context:property-placeholder location="/conf/datasource/jdbc.properties"/> <!-- spring 声明式事务配置 --> <!--transaction manager 声明事务管理器 使用spring PlatformTransactionManager--> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 配置事务策略 --> <tx:advice id="txAdvice" transaction-manager="txManager"> <!-- the transactional semantics... --> <tx:attributes> <!-- all methods starting with 'get' are read-only --> <tx:method name="get*" read-only="true"/> <tx:method name="count*" read-only="true"/> <!-- other methods use the default transaction settings (see below) --> <tx:method name="*"/> </tx:attributes> </tx:advice> <!-- execution(* org.lian.service.ContactsManagerService.*(..)) --> <!-- execution(* org.lian.service.*.*(..)) 包下的所有方法 --> <!-- execution(* org.lian.service..*Service.*(..)) 包下Service结尾Interface--> <aop:config> <aop:pointcut id="serviceOperation" expression="execution(* org.lian.service..*Service.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation"/> </aop:config> </beans>
service层java interface
package org.lian.service; import org.lian.domain.Contacts; public interface ContactsManagerService { public Contacts getContacts(Contacts contacts); public void addContacts(Contacts contacts); public void editContacts(Contacts contacts); }
实现类
@Service("contactsManagerService") public class ContactsManagerServiceImpl implements ContactsManagerService { @Autowired @Qualifier("contactsDao") private ContactsDao contactsDao; public ContactsDao getContactsDao() { return contactsDao; } public void setContactsDao(ContactsDao contactsDao) { this.contactsDao = contactsDao; } @Autowired @Qualifier("musicDao") private MusicDao musicDao; public MusicDao getMusicDao() { return musicDao; } public void setMusicDao(MusicDao musicDao) { this.musicDao = musicDao; } @Override public Contacts getContacts(Contacts contacts) { // TODO Auto-generated method stub return null; } @Override public void addContacts(Contacts contacts) { Music music = new Music(); music.setId(IdGenerator.getInstance().getUUID()); music.setName("唇语"); music.setSinger("任然"); music.setAlbum("从小到大"); music.setAuthor("耕耕"); music.setComposer("Xun"); music.setStyle("流行"); music.setDuration("04:48"); // 添加一个music对象 musicDao.add(music); contactsDao.insertContacts(contacts); // 事务 } @Override public void editContacts(Contacts contacts) { // TODO Auto-generated method stub } }
相关推荐
在本篇“spring学习笔记(十六)-声明式事务的例子”中,我们将深入探讨这一主题。 首先,声明式事务管理基于AOP(面向切面编程)实现,Spring通过代理模式在方法调用前后自动插入事务管理的代码。它主要通过两种方式...
通过这个Demo,开发者可以学习如何在Spring与iBatis集成的环境中配置和使用声明式事务,理解事务的ACID属性(原子性、一致性、隔离性和持久性)如何在实际项目中得到保障。此外,这也是理解和实践Spring AOP以及依赖...
通过这个小实例工程,我们可以学习到如何在Spring 3和Hibernate 4中利用注解实现声明式事务管理,这对于提升代码的可读性和可维护性至关重要。在实际项目中,这样的配置和使用方式非常常见,也是Java企业级开发的...
在"声明式事务控制,spring2.5+hibernate3集成源码"中,开发者可以学习如何配置Spring的事务管理器,以及如何在Hibernate的SessionFactory和SessionFactoryBuilder上使用Spring的TransactionProxyFactoryBean来创建...
本篇文章将深入探讨Spring框架的一个关键特性——声明式事务管理。通过声明式事务,开发者可以避免手动处理事务的繁琐工作,提高代码的可读性和可维护性。 首先,我们了解什么是事务。在数据库操作中,事务是一系列...
本教程将深入探讨如何在Spring中实现自定义事务管理器、编程式事务处理以及声明式事务`@Transactional`的使用。 首先,让我们了解事务管理的基本概念。事务是一组数据库操作,这些操作要么全部执行,要么全部回滚,...
声明式事务管理是Spring提供的一种高级事务管理方式,它允许开发者在不直接编写事务控制代码的情况下,通过配置元数据(如XML或注解)来声明事务边界。这种方式极大地提高了代码的可维护性和降低了业务逻辑与事务...
本资料包"spring声明式事务管理+jdbc+连接池.zip"显然是针对Spring框架在数据库操作方面的深入学习,特别是如何利用Spring进行声明式事务管理和JDBC操作,以及如何配置和使用数据库连接池。接下来,我们将详细探讨这...
在本“spring AOP(声明式事务管理)小程序”中,我们将深入探讨Spring AOP如何实现声明式事务管理,以及相关的通知类型。 1. **什么是声明式事务管理**: 声明式事务管理是相对于编程式事务管理而言的,后者需要在...
在实际开发中,我们通常使用声明式事务管理,它基于AOP(面向切面编程)来简化事务处理。然而,有时为了更细粒度的控制或者在特定场景下,我们可能需要采用编程式事务管理。 首先,了解事务的四大特性(ACID)是必...
全面分析 Spring 的编程式事务管理与声明式事务管理 本文将从 Spring 的事务管理入手,深入讲解编程式事务管理和声明式事务管理的实现机制和原理。通过本文的学习,您将能够理解 Spring 事务管理的本质,并灵活运用...
- **基于XML的声明式事务管理**:在Spring的配置文件中,使用`<tx:advice>`、`<aop:config>`和`<bean>`标签定义事务规则,如事务的传播行为、隔离级别、超时设置等。 - **基于注解的声明式事务管理**:通过在...
声明式事务是Spring框架的一大亮点,它允许开发者无需在业务代码中显式处理事务,而是通过配置来控制事务的边界。 首先,我们要理解什么是事务。在数据库操作中,事务是一组原子操作,要么全部完成,要么全部回滚。...
3. 声明式事务管理:利用Spring AOP的特性,Spring支持声明式事务管理,即可以在配置文件或注解中声明事务属性,这使得事务管理更加灵活和方便。 Spring的事务管理还提供了强大的事务传播行为和隔离级别配置,...
而声明式事务管理则更便捷,通过配置元数据(如XML或注解)来定义事务边界,让Spring容器自动管理事务。 1. **声明式事务管理**:这是Spring中最常用的事务管理方式。可以通过`@Transactional`注解在方法上声明事务...
Spring.NET 是一个基于 .NET Framework 的轻量...通过这个小示例,你将学习如何在 Spring.NET 中设置声明式事务管理,以及如何通过配置和注解控制事务的行为。这有助于创建更稳定、可扩展和易于维护的 .NET 应用程序。
2. **声明式事务管理**:Spring.NET提供了基于XML配置和基于属性的两种声明式事务管理。在XML配置中,可以在`<transaction:advice>`元素中定义事务行为,然后通过`<aop:config>`或`<aop:aspect>`将事务行为应用到...
声明式事务处理是Spring框架提供的一种简化事务管理的方式,它允许开发者通过配置或者注解来声明事务边界,而无需编写繁琐的事务管理代码。本资源包含两个文件:“Spring声明式事务处理.wrf”和“testtrans”,很...
5. **Spring Transactions**:事务管理模块,支持编程式和声明式事务管理,使得事务管理更加简单和可靠。 6. **Spring Web Services**:提供创建基于SOAP和RESTful的Web服务工具。 在压缩包中的"Spring4"目录下,...
接下来,我们将深入讨论Spring中的声明式事务管理。在Spring配置文件中,我们需要开启事务管理器,并在需要事务控制的Service层方法上添加`@Transactional`注解。这个注解允许我们指定事务的传播行为(如REQUIRED、...