0 0

spring中事务的注解配置优先级别10

spring中对于事务的注解配置可以使用两种方式,一种是
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="create*">
			<tx:method name="save*">
			<tx:method name="delete*">
			<tx:method name="*" read-only="true">
			<tx:method name="*" rollback-for="Exception">
		</tx:attributes>
	</tx:advice>

	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory">
	</bean>

<aop:config>
		<aop:advisor pointcut="execution(* *..service.*Manager.*(..))" advice-ref="txAdvice">
	</aop:config>

如果说在ServiceImpl.java中注明@Transactional,如
@Transactional(readOnly=true)
public class ServiceImpl implements Service {
 // ...
}

那么可以在配置中写入以下代码就可以了
<!---->
    <tx:annotation-driven transaction-manager="transactionManager">
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory">
	</bean>


如果上述两种方式同时存在的时候,代码以何种事务控制的方式为准?在此先谢谢各位的帮助!
2009年1月13日 16:08

3个答案 按时间排序 按投票排序

0 0

采纳的答案

我的测试代码跟楼主你的类似。
我贴一下错误,当我给类加上注解的时候会报这个错:
xception in thread "main" org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

去掉呢。就没事了。我的定义里把save等设置为非read-only,跟你的一样。

故证明:注解比XML配置优先级要高。

2009年1月14日 10:58
0 0

注解比XML配置优先级要高。

经过测试检验。。。楼主可以试试。。。

2009年1月14日 10:54
0 0

我觉得应该是第二种
毕竟第二种是直接在代码中控制了,当调用这个方法时,事务也就相应的启动了吧

2009年1月14日 10:29

相关推荐

    Spring的注解配置与XML配置之间的比较

    Spring框架的注解配置与XML配置是两种不同的配置方式,它们各自有其优势和适用场景。随着Spring框架的发展,注解配置逐渐成为主流,尤其是在Spring 2.5版本之后,其功能得到了极大的增强。 注解配置的优势在于它...

    Spring事务配置的五种方式

    本文将详细介绍Spring事务配置的五种主要方式,帮助你更好地理解和应用到实际项目中。 1. **编程式事务管理(Programmatic Transaction Management)** 编程式事务管理允许你在代码中直接管理事务的开始、提交、...

    spring事务管理

    ### Spring事务管理详解 #### 一、Spring事务管理概述 Spring框架提供了强大的事务管理功能,使得开发者能够更方便地管理应用程序中的事务。Spring事务管理主要包括两种类型:编程式事务管理和声明式事务管理。 -...

    跟我学Spring3(9.3)Spring的事务之编程式事

    声明式事务基于AOP(面向切面编程),通过在配置文件或注解中声明事务规则,而编程式事务则是通过编程的方式来控制事务的开始、提交、回滚等操作。 3. **编程式事务**:编程式事务通常通过TransactionTemplate或者...

    Spring Boot多数据源(支持Spring声明式事务切换和回滚).pdf

    在本文中,我们将深入探讨如何实现动态数据源切换,支持Spring声明式事务管理,并讨论多数据源回滚策略。以下是对这些知识点的详细说明: 1. **动态数据源切换**: - 通过AspectJ实现数据源的动态切换,可以设置在...

    Spring2.5-中文参考手册chm

    通过配置文件或注解,Spring框架可以自动将依赖对象注入到需要它们的组件中,降低了代码的耦合度,提高了可测试性。 **AOP(面向切面编程)** Spring 2.5引入了增强的面向切面编程(Aspect-Oriented Programming,...

    30. Spring事务模板及afterCommit存在的坑_V20240225.pdf

    ### Spring事务模板及afterCommit存在的坑 #### 一、为何避免使用`@Transactional`注解? 在支付系统设计中,通常会优先选择使用事务模板方法而非`@Transactional`注解来处理事务。这一做法主要是出于对事务粒度的...

    spring-framework-2.0-rc4.zip

    Spring 2.0提供了声明式事务管理,通过@Transactional注解可以方便地在方法级别控制事务边界,极大地降低了事务管理的复杂性。 7. **JMX支持** Spring 2.0引入了对Java Management Extensions (JMX) 的支持,使得...

    spring framework reference htmlsingle(单机英文版reference)

    《Spring Framework参考文档》是Java开发领域中极为重要的参考资料,主要涵盖了Spring框架4.3.8.RELEASE版本的详尽信息。Spring Framework是一款强大的、全面的开源应用框架,旨在简化Java企业级应用的开发,其核心...

    spring-tx:spring 事务传播示例

    本篇将深入探讨Spring事务传播行为,以及如何在实际应用中进行配置和使用。 1. **事务传播行为** Spring事务管理支持7种不同的事务传播行为,这些行为定义了一个事务方法在被另一个事务方法调用时应该如何处理: ...

    浅谈Spring的两种事务定义方式

    浅谈Spring的两种事务...声明式事务需要在XML文件中定义需要拦截方法的匹配,而注解式事务需要在Spring配置文件中定义一个事务管理对象,然后加入节点,引用该事务管理对象。使用@Transactional注解可以指定事务属性。

    spirn的事物配置详解与webservices案例

    - 注解配置:直接在需要事务控制的方法上使用`@Transactional`,并可设置 propagation(传播行为)、isolation(隔离级别)、readOnly(只读)、timeout(超时时间)等属性。 4. WebServices案例实践: - 创建...

    Spring+Mybatis整合,并实现基础的增删改查

    - 在`spring.xml`中加入事务管理的相关配置。 2. **配置事务管理器**: - 使用`org.springframework.jdbc.datasource.DataSourceTransactionManager`来管理数据源。 3. **配置事务通知**: - 通过AOP配置,在...

    Spring 3.1 API

    新增的`@Transactional`注解的propagation属性允许你定义事务传播行为,如REQUIRED、REQUIRES_NEW等,控制事务的边界。同时,`@Query`注解使得你可以直接在Repository接口中编写自定义SQL或HQL查询,无需额外的DAO层...

    Spring2.0-Reference_zh_CN.rar

    6. **事务管理**:Spring提供了声明式和编程式的事务管理,通过@Transactional注解,开发者可以在方法级别控制事务,降低了事务管理的复杂性。 7. **国际化与本地化**:Spring提供了强大的国际化支持,可以通过...

    Spring开发包

    它通过自动配置、起步依赖(starters)和内嵌的HTTP服务器,使得创建独立的、生产级别的基于Spring的应用变得快速而简单。 10. **Spring Cloud**:Spring Cloud是一系列工具的集合,用于简化微服务的开发、部署和...

    注解方式ssh项目

    `@Inject`注解(来自JSR 330)也可用于依赖注入,但通常在Spring整合环境中,我们会优先使用Spring的`@Autowired`。 3. **Hibernate框架**:Hibernate是持久层的解决方案,用于处理数据库操作。通过使用注解,我们...

    Hibernate、Spring和Struts工作原理及使用理由

    在Hibernate中,类之间的关系通过配置文件中的注解或XML定义,如many-to-one、one-to-many、many-to-many等,来映射表之间的关系。 Hibernate的缓存机制包括一级缓存(内部缓存)和二级缓存。一级缓存是Session级别...

    Java毕业设计-基于springboot开发的mvc高校办公室行政事务管理系统设计与实现-毕业论文(附毕设源代码).rar

    SpringBoot内置了Tomcat服务器,支持自动配置Spring框架,使得开发者可以快速地创建独立运行的、生产级别的Java应用。 在系统设计中,Model-View-Controller(MVC)架构模式是核心。MVC将应用逻辑分为三个部分:...

    基于springboot+SpringMVC+bootstrap的云笔记系统-源码

    Spring Boot是Spring框架的一个模块,它简化了创建独立的、生产级别的基于Spring的应用程序的过程。Spring Boot的核心特性包括自动配置、内嵌Web服务器(如Tomcat)、健康检查和应用指标等。通过使用Spring Boot,...

Global site tag (gtag.js) - Google Analytics