Spring 使用注解方式进行事务管理
本文正在参与【[ 报名牛客千粉冲刺营! ] 】 征文活动,一起创作,牛客周边和百元京东卡等你来领~
大家好,我是小羽,专注于后端开发相关知识的分享。今天将给大家带来的是后端工作中常用到的 Spring 使用注解进行事务管理的必备知识点。
使用步骤:
步骤一、在spring配置文件中引入tx:命名空间 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"> 步骤二、具有@Transactional 注解的bean自动配置为声明式事务支持 <!-- 事务管理器配置, Hibernate单数据源事务 --> <bean id="defaultTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean>
<!-- 使用annotation定义事务 --> <tx:annotation-driven transaction-manager="defaultTransactionManager" proxy-target-class="true" /> 步骤三、在接口或类的声明处 ,写一个@Transactional. 要是只在接口上写, 接口的实现类就会继承下来、接口的实现类的具体方法,可以覆盖类声明处的设置 @Transactional //类级的注解、适用于类中所有的public的方法
事务的传播行为和隔离级别
大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅。
事物注解方式: @Transactional
当标于类前时, 标示类中所有方法都进行事物处理 , 例子:
@Transactional public class TestServiceBean implements TestService {} 当类中某些方法不需要事物时:
@Transactional public class TestServiceBean implements TestService {
private TestDao dao;
public void setDao(TestDao dao) { this.dao = dao; }
@Transactional(propagation = Propagation.NOT_SUPPORTED) public List<Object> getAll() { return null; }
}
#校招##秋招##面经##高频知识点汇总##Java#