`

Spring3.0中的事务控制的配置方法

阅读更多

第一种配置方法:基于XML的事务管理

这种方法不需要对原有的业务做任何修改,通过在XML文件中定义需要拦截方法的匹配即可完成配置,要求是,业务处理中的方法的命名要有规律,比如setXxx,xxxUpdate等等。详细配置如下:

	
	<!-- 定义事务处理类,不同的数据访问方式,事务处理类不同
		比如:Hibernate操作的HibernateTransactionManager,JDBC操作的使用DataSourceTransactionManager
	 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!-- 定义事务通知 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<!-- 定义方法的过滤规则 -->
		<tx:attributes>
			<!-- 所有方法都使用事务 -->
			<tx:method name="*" propagation="REQUIRED"/>
			<!-- 定义所有get开头的方法都是只读的 -->
			<tx:method name="get*" read-only="true"/>
		</tx:attributes>
	</tx:advice>
	
	<!-- 定义AOP配置 -->
	<aop:config>
		<!-- 定义一个切入点 -->
		<aop:pointcut expression="execution (* com.iflysse.school.services.impl.*.*(..))" id="services"/>
		<!-- 对切入点和事务的通知,进行适配 -->
		<aop:advisor advice-ref="txAdvice" pointcut-ref="services"/>
	</aop:config>

第二中配置方法:基于@Transactional的事务管理

这种方法,只需要在Spring配置文件中定义一个事务管理对象(如DataSourceTransactionManager),然后加入<tx:annotation-driven/>节点,引用该事务管理对象,然后即可在需要进行事务处理的方法使用@Transactional进行标注。示例如下:

Spring配置XML文件

	<!-- 定义事务处理类,不同的数据访问方式,事务处理类不同
		比如:Hibernate操作的HibernateTransactionManager,JDBC操作的使用DataSourceTransactionManager
	 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	<!-- 声明使用注解式事务 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>

Java代码中@Transactional示例

/**
 * @author ZYWANG 2011-3-24
 */
@Service
@Transactional(propagation = Propagation.REQUIRED)
public class TeacherServicesImpl implements TeacherServices {
	@Autowired
	TeacherDao dao = null;

	public TeacherDao getDao() {
		return dao;
	}

	public void setDao(TeacherDao dao) {
		this.dao = dao;
	}

	@Override
	@Transactional(readOnly=true,propagation=Propagation.NEVER)
	public List<Teacher> getAllTeachers() {
		return getDao().getAllTeachers();
	}

	@Override
	public void addTeacher(Teacher teacher) {
		if(teacher.getId() > 0){
			getDao().updateTeacher(teacher);
		}else{
			getDao().addTeacher(teacher);
		}
	}
}

 

 个人认为第一中方式的配置的侵入性低多了,写程序时只需要关注业务和命名规范,不需要考虑事务处理;第二种方式的配置可以更加灵活的使用事务,个性化定制。

以上配置基于Spring 3.0.5 进行设置,参考其《Reference Documentation》

8
1
分享到:
评论
1 楼 ynyee 2012-06-17  
嗯,原来使用spring 的注解事务这么简单啊。学习了。向大侠学习。

相关推荐

    spring3.0 全部jar包

    在下载的"spring3.0 全部jar包"中,"dist"文件夹可能包含了所有Spring 3.0框架运行所需的库文件,包括核心容器、AOP、ORM、Web、Test等多个模块的jar包。这些jar文件是构建和运行Spring 3.0应用的基础,它们包含了...

    spring3.0两种事务管理配置

    Spring 3.0 提供了两种事务管理配置方法:基于 XML 的事务管理和基于 @Transactional 的事务管理,这两种方法都是为了实现事务管理的目标,分别具有不同的配置方式和优缺点。 基于 XML 的事务管理 这种方法不需要...

    spring3.0jar包

    Spring 3.0 是一个里程碑式的版本,在Java企业级应用开发领域中占据着核心地位。这个版本的发布引入了许多新特性、改进和优化,旨在提升开发者的工作效率和应用程序的可维护性。Spring 框架以其强大的依赖注入...

    Spring3.0中文帮助文档

    以上只是Spring 3.0中部分关键特性和功能的概述,实际的中文帮助文档会详细解释这些概念,提供使用示例,并指导开发者如何在项目中有效地应用Spring框架。通过深入学习和实践,开发者能够充分利用Spring 3.0的优势,...

    Spring 3.0就这么简单源代码

    《Spring3.0就这么简单》的主旨就是帮助读者尽快上手,掌握Spring3.0的核心内容,正确地进行项目实战,同时汲取Spring的思想,并最终将这种思想灵活运用到实际工作中。《Spring3.0就这么简单》主要介绍了Spring3.0的...

    spring3.0 jar包

    在Spring 3.0中,注解的应用更加广泛,如@Controller、@Service、@Repository和@Transactional等,极大地简化了XML配置,提高了开发效率。开发者可以通过注解直接在类或方法上声明其在应用程序中的角色和行为。 3....

    Spring 3.0就这么简单_Part3.pdf

    《Spring 3.0就这么简单》语言简洁,实例丰富,可帮助读者迅速掌握使用Spring3.0进行开发所需的各种技能。《Spring3.0就这么简单》适合于具有一定Java编程基础的读者,以及在Java平台下进行各类软件开发的开发人员和...

    spring3.0发行版

    事务管理方面,Spring 3.0的PlatformTransactionManager接口提供了统一的事务管理,支持编程式和声明式事务控制。 面向切面编程(AOP)在Spring 3.0中也得到了强化。新增的@Aspect注解使得定义切面更加直观,而@...

    spring 3.0 jar 包

    Spring 3.0是Spring框架的一个重要版本,它在Java应用程序开发中扮演着核心角色,尤其是在企业级应用中。这个版本引入了许多新特性,优化了性能,并提供了更好的开发者体验。以下是一些关于Spring 3.0及其jar包的...

    spring3.0的API

    在Spring 3.0中,核心容器(Core Container)组件得到了显著提升,主要体现在以下几个方面: 1. **Bean表达式语言(Bean Expression Language, BEML)**:Spring 3.0引入了基于Groovy的表达式语言,允许在配置中...

    spring3.0完整框架

    这个压缩包中的"spring3.0"文件很可能包含了所有需要的Spring 3.0框架相关的jar包,包括核心库、AOP、Web、MVC等模块的jar,是搭建Spring 3.0环境所必需的。开发者可以通过这些jar包快速构建基于Spring 3.0的应用,...

    spring3.0MVC中文教材

    - **松耦合**: Spring MVC中的控制器与servlet或JSP之间的耦合度很低,这意味着开发者可以更自由地选择如何向客户端呈现视图。 #### 二、Spring 3.0 MVC框架的主要特性 1. **Java 5的支持**: Spring 3.0全面支持...

    spring3.0帮助文档(包含REST资料)

    Spring 3.0重要特性总结如下: ◆Spring表达式(SpEL):用于bean定义的核心表达式分析器 ◆对基于注释的组件的更多支持:允许通过元注释创建注释的“快捷方式” ◆标准化的依赖性注入注释:对Java中依赖性注入的...

    spring3.0 MVC中文教程

    2. **第2部分:在Spring 3.0 MVC中创建Hello World应用程序** - 通过一个简单的示例来展示如何快速启动一个Spring MVC项目。 3. **第3部分:在Spring 3.0 MVC中进行表单处理** - 探讨如何使用Spring MVC处理表单提交...

    Spring3.0Jar包

    Spring 3.0 是 Spring 框架的一个重要版本,发布于2009年,它带来了许多新特性和改进,极大地增强了 Java 开发者在企业级应用开发中的灵活性和效率。Spring 框架是一个全面的后端开发解决方案,核心特性包括依赖注入...

    Spring3.0中文版

    4. **AOP增强**:在Spring3.0中,AOP的使用更加方便,可以通过注解定义切面,减少了编写代理代码的工作。同时,增强了切点表达式(Pointcut Expression)的功能。 5. **SpringMVC**:作为Spring框架的Web层解决方案...

    spring 3.0 jar包

    这个压缩包包含的是Spring 3.0的jar文件,意味着你可以直接导入到项目中使用,而无需担心资源的完整性和测试问题。在使用前,请确保你的环境满足Spring 3.0的系统需求,并参考Spring官方文档来了解如何配置和使用...

    spring3.0jar包集合

    Spring 3.0中的Model-View-Controller(MVC)框架为Web应用提供了强大的支持。它包括模型对象、视图解析器、控制器接口和其他辅助类,帮助开发者构建清晰、解耦的Web应用。 4. **数据访问集成**: Spring 3.0提供...

    spring3.0轻量级框架

    Spring 3.0的AOP模块提供了声明式事务管理,允许开发者通过注解如@Transactional实现事务控制,简化了事务管理的代码。同时,增强了对AspectJ的支持,使得切面的定义更为灵活。 三、数据访问/集成(Data Access/...

Global site tag (gtag.js) - Google Analytics