`

Spring4学习(五)声明式事务配置一

阅读更多

       基于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学习笔记(十六)-声明式事务的例子

    在本篇“spring学习笔记(十六)-声明式事务的例子”中,我们将深入探讨这一主题。 首先,声明式事务管理基于AOP(面向切面编程)实现,Spring通过代理模式在方法调用前后自动插入事务管理的代码。它主要通过两种方式...

    spring+ibatis声明式事务Demo_

    通过这个Demo,开发者可以学习如何在Spring与iBatis集成的环境中配置和使用声明式事务,理解事务的ACID属性(原子性、一致性、隔离性和持久性)如何在实际项目中得到保障。此外,这也是理解和实践Spring AOP以及依赖...

    spring3+hibernate4配置声明式事务管理(annotation方式)

    通过这个小实例工程,我们可以学习到如何在Spring 3和Hibernate 4中利用注解实现声明式事务管理,这对于提升代码的可读性和可维护性至关重要。在实际项目中,这样的配置和使用方式非常常见,也是Java企业级开发的...

    声明式事务控制spring+hibernate集成

    在"声明式事务控制,spring2.5+hibernate3集成源码"中,开发者可以学习如何配置Spring的事务管理器,以及如何在Hibernate的SessionFactory和SessionFactoryBuilder上使用Spring的TransactionProxyFactoryBean来创建...

    Spring学习笔记之九--声明式事务

    本篇文章将深入探讨Spring框架的一个关键特性——声明式事务管理。通过声明式事务,开发者可以避免手动处理事务的繁琐工作,提高代码的可读性和可维护性。 首先,我们了解什么是事务。在数据库操作中,事务是一系列...

    spring 自定义事务管理器,编程式事务,声明式事务@Transactional使用

    本教程将深入探讨如何在Spring中实现自定义事务管理器、编程式事务处理以及声明式事务`@Transactional`的使用。 首先,让我们了解事务管理的基本概念。事务是一组数据库操作,这些操作要么全部执行,要么全部回滚,...

    跟我学Spring3(9.4)Spring的事务之声明式事

    声明式事务管理是Spring提供的一种高级事务管理方式,它允许开发者在不直接编写事务控制代码的情况下,通过配置元数据(如XML或注解)来声明事务边界。这种方式极大地提高了代码的可维护性和降低了业务逻辑与事务...

    spring声明式事务管理+jdbc+连接池.zip

    本资料包"spring声明式事务管理+jdbc+连接池.zip"显然是针对Spring框架在数据库操作方面的深入学习,特别是如何利用Spring进行声明式事务管理和JDBC操作,以及如何配置和使用数据库连接池。接下来,我们将详细探讨这...

    spring AOP(声明式事务管理)小程序

    在本“spring AOP(声明式事务管理)小程序”中,我们将深入探讨Spring AOP如何实现声明式事务管理,以及相关的通知类型。 1. **什么是声明式事务管理**: 声明式事务管理是相对于编程式事务管理而言的,后者需要在...

    spring学习笔记(十五)-编程式事务例子

    在实际开发中,我们通常使用声明式事务管理,它基于AOP(面向切面编程)来简化事务处理。然而,有时为了更细粒度的控制或者在特定场景下,我们可能需要采用编程式事务管理。 首先,了解事务的四大特性(ACID)是必...

    全面分析Spring的编程式事务管理与声明式事务管理.doc

    全面分析 Spring 的编程式事务管理与声明式事务管理 本文将从 Spring 的事务管理入手,深入讲解编程式事务管理和声明式事务管理的实现机制和原理。通过本文的学习,您将能够理解 Spring 事务管理的本质,并灵活运用...

    spring框架的学习--事务

    - **基于XML的声明式事务管理**:在Spring的配置文件中,使用`&lt;tx:advice&gt;`、`&lt;aop:config&gt;`和`&lt;bean&gt;`标签定义事务规则,如事务的传播行为、隔离级别、超时设置等。 - **基于注解的声明式事务管理**:通过在...

    spring_声明式事务_xml事务的书写.zip

    声明式事务是Spring框架的一大亮点,它允许开发者无需在业务代码中显式处理事务,而是通过配置来控制事务的边界。 首先,我们要理解什么是事务。在数据库操作中,事务是一组原子操作,要么全部完成,要么全部回滚。...

    spring事务详解

    3. 声明式事务管理:利用Spring AOP的特性,Spring支持声明式事务管理,即可以在配置文件或注解中声明事务属性,这使得事务管理更加灵活和方便。 Spring的事务管理还提供了强大的事务传播行为和隔离级别配置,...

    Spring4--3.jdbcTemplate事务

    而声明式事务管理则更便捷,通过配置元数据(如XML或注解)来定义事务边界,让Spring容器自动管理事务。 1. **声明式事务管理**:这是Spring中最常用的事务管理方式。可以通过`@Transactional`注解在方法上声明事务...

    spring.net 声明式事物管理小示例

    Spring.NET 是一个基于 .NET Framework 的轻量...通过这个小示例,你将学习如何在 Spring.NET 中设置声明式事务管理,以及如何通过配置和注解控制事务的行为。这有助于创建更稳定、可扩展和易于维护的 .NET 应用程序。

    Spring.NET学习笔记16——事务管理Demo源码

    2. **声明式事务管理**:Spring.NET提供了基于XML配置和基于属性的两种声明式事务管理。在XML配置中,可以在`&lt;transaction:advice&gt;`元素中定义事务行为,然后通过`&lt;aop:config&gt;`或`&lt;aop:aspect&gt;`将事务行为应用到...

    声明式事务处理(源代码)

    声明式事务处理是Spring框架提供的一种简化事务管理的方式,它允许开发者通过配置或者注解来声明事务边界,而无需编写繁琐的事务管理代码。本资源包含两个文件:“Spring声明式事务处理.wrf”和“testtrans”,很...

    Spring4 jar包和Spring配置文件

    5. **Spring Transactions**:事务管理模块,支持编程式和声明式事务管理,使得事务管理更加简单和可靠。 6. **Spring Web Services**:提供创建基于SOAP和RESTful的Web服务工具。 在压缩包中的"Spring4"目录下,...

    spring hibernate 事务管理学习笔记(一)

    接下来,我们将深入讨论Spring中的声明式事务管理。在Spring配置文件中,我们需要开启事务管理器,并在需要事务控制的Service层方法上添加`@Transactional`注解。这个注解允许我们指定事务的传播行为(如REQUIRED、...

Global site tag (gtag.js) - Google Analytics