- 浏览: 599143 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
1.考虑有下面这么一个类
Spring之所以可以对开启@Transactional的方法进行事务管理,是因为Spring为当前类生成了一个代理类,然后在执行相关方法时,会判断这个方法有没有@Transactional注解,如果有的话,则会开启一个事务。
但是,上面这种调用方式时,在调用baz()时,使用的并不是代理对象,从而导致this.bar()时也不是代码对象,从而导致@Transactional失败。
非事务声明方法调用事务声明方法,则事务失效。使用了@Transactional的方法,对同一个类里面的方法调用, @Transactional无效。比如有一个类Test,它的一个方法A,A再调用Test本类的方法B(不管B是否public还是private),但A没有声明注解事务,而B有。则外部调用A之后,B的事务是不会起作用的。(经常在这里出错)
2.rollbackFor属性
默认情况下,在遇到运行时异常和Error,Spring事务会进行回滚,而遇到非运行时异常Exception则不会回滚
可以通过rollbackFor指定需要回滚的受检查异常,指定异常之后rollbackFor=Exception.class,被指定的异常和该异常的子类都会得到回滚,并且运行时异常和Error异常仍然会得到回滚。
public class Foo { @Transactional public void bar() { /* … */ } public void baz() { this.bar(); } }
Spring之所以可以对开启@Transactional的方法进行事务管理,是因为Spring为当前类生成了一个代理类,然后在执行相关方法时,会判断这个方法有没有@Transactional注解,如果有的话,则会开启一个事务。
但是,上面这种调用方式时,在调用baz()时,使用的并不是代理对象,从而导致this.bar()时也不是代码对象,从而导致@Transactional失败。
非事务声明方法调用事务声明方法,则事务失效。使用了@Transactional的方法,对同一个类里面的方法调用, @Transactional无效。比如有一个类Test,它的一个方法A,A再调用Test本类的方法B(不管B是否public还是private),但A没有声明注解事务,而B有。则外部调用A之后,B的事务是不会起作用的。(经常在这里出错)
2.rollbackFor属性
默认情况下,在遇到运行时异常和Error,Spring事务会进行回滚,而遇到非运行时异常Exception则不会回滚
可以通过rollbackFor指定需要回滚的受检查异常,指定异常之后rollbackFor=Exception.class,被指定的异常和该异常的子类都会得到回滚,并且运行时异常和Error异常仍然会得到回滚。
发表评论
文章已被作者锁定,不允许评论。
-
Spring BeanFactoryPostProcessor和BeanPostProcessor的区别
2018-11-14 15:40 705链接:https://blog.csdn.net/caihai ... -
spring BeanPostProcessor理解
2018-11-14 11:31 319链接:https://blog.csdn.net/ginkgo ... -
Spring 源码解析之Initializer
2018-11-14 11:27 455链接:https://blog.csdn.net/ktlife ... -
spring transaction同一个类不回滚解决方法
2018-10-11 10:59 7711.修改配置文件 <aop:aspectj-autopr ... -
spring mvc i18n国际化学习(spring:message)
2018-06-09 09:35 639spring.xml文件中配置: <!-- 存储区域 ... -
Spring Boot Oauth2.0授权服务器
2018-05-11 14:19 1650什么是OAuth? OAuth(Open Authoriza ... -
Spring Boot @Import注解(将指定类实例注入到IOC容器中)
2018-05-09 10:20 1595SpringBoot 的 @Import 用于将指定的类实例注 ... -
Spring Boot @Conditional注解
2018-05-09 10:15 1815Spring Boot的强大之处在于使用了Spring 4框架 ... -
Spring Boot自定义starter pom实例(/META-INFO/spring.factory文件)
2018-05-09 09:48 1138自定义starter pom 自己实现一个简单的例子,当某个类 ... -
Spring Boot自动配置原理(@Conditional @Import)
2018-04-26 14:45 1336Springboot的自动配置是SpringBoot的关键,主 ... -
Spring Boot优缺点总结
2018-04-16 10:25 1534优点: 1.去除了大量的xml配置文件 2.简化 ... -
SpringBoot JPA @Transaction 知识学习
2018-03-16 09:09 759一、事务相关概念 1、事务的特点 原子性:事务是一个原子操 ... -
Sprint @Query注解的用法(nativeQuery=true/false)(Spring Data JPA)
2018-03-15 16:33 38371. 一个使用@Query注解的简单例子 @Query(val ... -
Spring Boot JpaRepository知识学习(Spring Data JPA)
2018-03-14 11:17 18001.Spring Data所解决的问题 Spring Dat ... -
SpringCloud Hystrix知识学习(防止雪崩效应)
2018-03-13 14:57 929一、Hystrix说明 1.服务雪崩效应:是一种因服务提供者的 ... -
SpringCloud @LoadBalanced注解学习
2018-03-13 09:48 2221当时我们说开启负载均衡很简单,只需要在RestTemplate ... -
Spring Boot配置方式(java配置和注解配置)
2018-03-12 15:09 1109Java配置 从Spring 3.x开始,Spring提供了J ... -
java RestTemplate访问restful服务
2018-03-01 15:02 1621REST的基础知识 当谈论REST时,有一种常见的错误就是将其 ... -
SpringCloud | 第七篇: 高可用的服务注册中心
2018-02-26 14:31 484文章 第一篇: 服务的注册与发现(Eureka) 介绍了服务注 ... -
SringCloud | 第六篇: 分布式配置中心(Spring Cloud Config)
2018-02-26 09:13 411一、简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文 ...
相关推荐
总结来说,"springTransaction.rar"这个压缩包提供了一个学习和理解Spring事务管理机制的实践场景。通过分析和运行这个示例,开发者可以深入理解如何在Java应用中利用Spring框架来处理复杂的数据库操作,保证数据的...
通过`spring-transaction-demo`项目,我们可以学习到如何在Spring Boot应用中有效地使用事务管理,理解其背后的原理,以及如何处理事务边界内的异常情况。这个实战项目不仅有助于理论知识的理解,也提供了实际操作的...
综上所述,"spring-transaction-demo"项目是一个极好的学习资源,帮助开发者理解和掌握Spring事务管理的精髓,特别是其事务传播机制。通过实践这些示例,可以提升开发者在实际项目中的事务处理能力。
它涵盖了Spring与MyBatis的整合配置,以及如何利用Spring的AOP和Transaction Management来处理事务,为读者提供了一个完整的解决方案。 4. **《Spring Boot开发实战.pdf》**:此书是Spring Boot的实战指南,不仅...
在实际项目中,`springtransaction`工程可能是包含了一个完整的示例,用于演示如何在MyEclipse环境中配置和使用Spring的事务管理功能。开发者可以通过导入此工程,学习和实践Spring事务管理的配置与使用,从而更好地...
在IT行业中,Spring框架是Java企业级应用开发的首选框架,而JPA...这个例子对于学习Spring和JPA的整合,以及事务处理的最佳实践非常有价值。通过深入研究和实践这个示例,开发者可以更好地理解和掌握这些关键概念。
这个"Spring Batch学习demo项目源码"是针对Spring Batch进行学习实践的一个实例,旨在帮助开发者了解并掌握如何在实际应用中使用Spring Batch。 在源码中,`batch-xml`文件可能是配置文件,通常在Spring Batch项目...
6. **Integration with Spring Transaction Management**:Spring Data JPA与Spring的事务管理无缝集成,可以方便地进行事务控制。 在实际使用中,我们需要配置Spring Data JPA,这通常涉及到以下步骤: 1. 添加...
7. **Spring Transaction**:提供了统一的事务管理接口,无论是本地事务还是分布式事务,都能进行统一的管理和控制。`@Transactional`注解使得事务管理变得简单。 8. **Spring Aspects**:提供了AOP的实现,包括...
### Spring学习方法详解 #### 一、Spring框架概述 Spring框架是一个开源的、设计层面的框架,主要用于解决业务逻辑层与其他层之间的松耦合问题。它通过实现面向接口的编程思想,使得整个系统应用能够更好地组织和...
通过对 `projects.rar`、`src.rar` 和 `dist.rar` 的学习和研究,开发者可以更好地理解和掌握 Spring 3.0.0.M2 的核心特性,从而在实际开发中发挥其优势,提升项目效率和质量。同时,了解这些特性也对后续版本的学习...
编程式事务管理通过调用`PlatformTransactionManager`接口提供的方法进行显式控制,如`beginTransaction()`, `commit()`, 和`rollback()`。声明式事务管理则依赖于AOP(面向切面编程)来自动处理事务的开始、提交或...
【Spring注解学习手札】 在现代Java Web开发中,Spring框架因其强大的功能和灵活性而备受推崇。Spring注解的引入极大地简化了配置文件,提高了开发效率。本篇将聚焦于Spring MVC中的注解,通过构建一个简单的Web...
`spring_transaction.txt`会详细阐述如何配置事务管理,以及@Transactional注解的使用。 7. **Spring安全(Spring Security)**: `spring_security.sql`和`spring_security.txt`可能涉及到Spring Security的基本...
在Spring和Hibernate的整合中,Spring可以作为Hibernate的容器,管理SessionFactory和Transaction,这样我们就能够在Spring的管理下进行数据库操作。通过@PersistenceContext注解,Spring可以注入EntityManager,@...
3. **声明式事务管理(Declarative Transaction Management)**:Spring框架提供的事务管理机制,允许开发人员通过配置文件或注解的方式来管理事务边界,大大简化了事务处理的代码量,提高了代码的可读性和可维护性...
控制反转)、AOP(Aspect Oriented Programming,面向切面编程)以及Transaction(事务管理)的源码分析,帮助开发者更全面地理解Spring的工作机制。 首先,让我们深入探讨Spring的IoC容器。IoC是Spring的核心特性...
通过阅读文档,开发者可以学习到如何使用Spring框架构建企业级应用,掌握Spring的核心概念如IoC容器和依赖注入,并了解Spring提供的各种模块和服务。无论你是初次接触Spring的新手,还是需要深入了解框架的高级...
资料包含day03-itheima11-spring-01-aop-xml-methodinvocation-count,day03-itheima11-spring-02-aop-xml-privilege,day03-itheima11-spring-...05-spring-jdbc,day03-itheima11-spring-06-spring-jdbc-transaction
`org.springframework.transaction`和`org.springframework.transaction.interceptor`包中的TransactionInterceptor处理事务的开始、提交和回滚。 五、其他关键模块 9. **Spring表达式语言(SpEL)**:在`org....