`
volking
  • 浏览: 4599 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SPRING 声明式XML事务和注解式事务, 哪个优先级更高?

阅读更多
这个问题其实早就有了, 不过很懒 一直都没搞, 这次有个新项目, 刚好又学了点springjunit测试, 发现了一点问题, 也对以往的疑惑做了一些测试

SPRING 声明式XML事务和注解式事务, 哪个优先级更高?



几个关键代码, 其他省略

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

    <tx:advice id="txAdvice">
        <tx:attributes>
            <!--tx:method name="get*" read-only="true"/-->
            <tx:method name="test*" read-only="true" />
            <tx:method name="*" />
        </tx:attributes>
    </tx:advice>

	@Override
	@Transactional(readOnly = false)
	public void saveRole() {//这是manager代码
		Role role = new Role("role1");
		role = roleDao.save(role);
		if (role.getId() != null)
			throw new RuntimeException("error");
		role = new Role("role2");
		role = roleDao.save(role);
	}

	@Test
	public void testSaveRole() {//这是junit test代码
		roleManager.saveRole();
	}



spring有2种方式声明事务
1 XML文件
2 注解

测试1 XML里设置 read-only="true", 注解 read-only="false"  执行出错 看来是XML优先级高
org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

测试2 XML里设置 read-only="false", 注解 read-only="true"  执行成功 看来还是XML优先级高

测试3 XML里不设置 注解 read-only="true" 执行出错

不过和有的人得出的结论相悖 http://www.iteye.com/problems/10112

本人 spring 版本 3.0.6

不知道有没有人做类似测试.


还有一个问题, 就是junit 事务的问题
	@Test
	public void testSaveRole() {
		roleManager.saveRole();//此方法里的事务可以回滚
	}

	@Test
	public void testSaveRole() {//但是这样写, 事务就不回滚
		Role role = new Role("role1");
		role = roleDao.save(role);
		if (role.getId() != null)
			throw new RuntimeException("error");
		role = new Role("role2");
		role = roleDao.save(role);
	}

不知道是什么原因.
分享到:
评论

相关推荐

    spring事务,xml方式和注解方式

    本节将详细介绍Spring如何通过XML配置和注解方式来实现事务管理。 首先,我们来看Spring事务的XML配置方式。在Spring中,事务管理通常通过`&lt;tx:annotation-driven&gt;`和`&lt;bean&gt;`标签来实现。`&lt;tx:annotation-driven&gt;`...

    Spring自定义切面事务问题

    - **Spring 事务管理**:Spring 提供了两种事务管理方式:编程式事务管理和声明式事务管理。声明式事务管理通常更受欢迎,因为它可以通过简单的配置实现,而无需编写额外的代码。 2. **Spring 自定义切面事务失效...

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

    一般来说,声明式事务管理由于其简洁和低侵入性,是大部分Spring应用的首选。而编程式事务管理则在需要更细粒度控制或与其他框架集成时更为合适。了解这些配置方式,可以帮助你更灵活地在Spring应用中实现事务管理。

    spring注解&XML配置AOP

    在Spring框架中,注解和XML配置是两种主要的方式来实现面向切面编程(Aspect-Oriented Programming,简称AOP)。AOP是一种编程范式,它允许程序员定义“切面”,这些切面封装了关注点,如日志、事务管理、性能监控等...

    spring mvc生成xml或json

    在Spring MVC中,生成XML和JSON通常依赖于`@ResponseBody`注解和相应的转换器。`@ResponseBody`注解用于告诉Spring将方法的返回值直接写入HTTP响应体,而不是试图寻找一个视图来渲染。配合转换器,Spring可以将Java...

    14、加载spring启动首先进入的类方法注解1

    需要注意的是,如果同时使用了注解和接口,注解的优先级更高,Spring会首先执行注解标注的方法,然后才是接口方法。此外,如果你在XML配置中也指定了初始化和销毁方法,那么这些方法也会被调用,除非你明确地禁用了...

    尚硅谷佟刚Spring4代码及PPT.rar

    JdbcDaoSupport、使用 NamedParameterJdbcTemplate、Spring 的声明式事务、事务的属性(传播行为、隔离级别、回滚属性、只读属性、过期时间)、使用 XML 文件的方式配置事务、整合 Hibernate、整合 Struts2 等。

    配置整合DWR3.0和Spring2.5使用annotation注解

    在本文中,我们将探讨如何将Direct Web Remoting ...为了使DWR能够识别带有`@RemoteProxy`和`@RemoteMethod`注解的类和方法,我们需要在Spring的配置文件(如`applicationContext.xml`)中启用DWR的注解扫描: ```xml ...

    Spring框架是在2003年兴起的一门轻量级的JAVAEE框架技术 Spring框架学习资料第五天

    当类和方法都标注了`@Transactional`时,方法上的配置优先级更高。 **三、注解式开发** 注解式开发是Spring框架的一大亮点,它遵循“约定优于配置”的原则,减少了XML配置文件的工作量,提高了开发效率。启用注解...

    JavaEE spring半自动实现AOP代理

    在"Day01_SemiAutoAOP"这个压缩包中,可能包含了相关的代码示例,用于演示如何在Spring中通过注解和XML配置来实现AOP代理。通过学习这些示例,开发者可以更好地理解和掌握Spring AOP的使用技巧,从而在实际项目中...

    Spring IOC之基于注解的容器配置.docx

    需要注意的是,当同时存在注解和XML配置时,注解配置优先级高于XML配置,这意味着如果一个属性在XML和注解中都进行了配置,那么注解配置的值将会覆盖XML配置的值。因此,合理地结合使用注解和XML配置,可以实现最佳...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘3.zip

    057-spring-tx-编程式和声明式事务理解.mp4 058-spring-tx-事务管理器和原理.mp4 059-spring-tx-基本程序搭建.mp4 060-spring-tx-事务注解添加实践.mp4 061-spring-tx-只读模式介绍和设置.mp4 062-spring-tx-...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘4.zip

    057-spring-tx-编程式和声明式事务理解.mp4 058-spring-tx-事务管理器和原理.mp4 059-spring-tx-基本程序搭建.mp4 060-spring-tx-事务注解添加实践.mp4 061-spring-tx-只读模式介绍和设置.mp4 062-spring-tx-...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘2.zip

    057-spring-tx-编程式和声明式事务理解.mp4 058-spring-tx-事务管理器和原理.mp4 059-spring-tx-基本程序搭建.mp4 060-spring-tx-事务注解添加实践.mp4 061-spring-tx-只读模式介绍和设置.mp4 062-spring-tx-...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘1.zip

    057-spring-tx-编程式和声明式事务理解.mp4 058-spring-tx-事务管理器和原理.mp4 059-spring-tx-基本程序搭建.mp4 060-spring-tx-事务注解添加实践.mp4 061-spring-tx-只读模式介绍和设置.mp4 062-spring-tx-...

    加载spring 文件,在web.xml中的配置

    随着Spring Boot的流行,传统的`web.xml`配置方式逐渐被基于注解的配置和自动配置所取代。Spring Boot应用不再需要`web.xml`,而是通过`SpringApplication.run()`方法启动,自动配置和加载应用的配置。 总之,`web...

    spring AOP的运用

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它为Java应用程序提供了声明式的企业级服务,如事务管理、日志记录等。AOP的核心概念是切面(Aspect)和通知(Advice)...

    AOP中的注解自动装配通知

    总之,AOP中的注解自动装配通知是Spring框架中的重要特性,它通过注解简化了Bean的装配过程,同时也使得AOP的切面更容易实现和理解。在实际开发中,熟练掌握这些知识能帮助我们编写出更加优雅、高效的代码。

    Spring笔试考试题目.doc

    Spring的核心是控制反转(IOC)模式,它通过管理对象的生命周期和依赖关系,实现了应用程序组件的松散耦合,使代码更易于测试和维护。在Spring中,实现IOC的方式主要有四种:依赖注入、Java注解、XML配置以及Service...

Global site tag (gtag.js) - Google Analytics