携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第14天,点击查看活动详情
哈喽,大家好!我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在掘金上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。 本文主要讲解java实现单链表,如果大家读后觉得有用的话,还请大家多多支持博主:欢迎 ❤️点赞👍、收藏⭐、留言💬 ✨✨✨个人主页:JinHuan
基于注解实现Spring的事务
@Service
public class TeamService {
@Autowired
private TeamDao teamDao;
/**
* @Transactional 属性 说明:
* readOnly:是否只读
* rollbackFor={Exception.class}: 遇到什么异常会回滚,可以是自定义异常类
* propagation事务的传播:
* Propagation.REQUIRED:在当前没有事务的时候,就会创建一个新的事务;如果当前已经有了事务,就直接加入该事务,比较常用的设置
* Propagation.SUPPORTS:支持当前事务,如果当前已经有事务,就直接加入该事务;当前没有事务的时候,就以非事务方式执行,注意是非事务
* Propagation.MANDATORY:支持当前事务,如果当前有事务,就直接加入该事务;当前没有事务的时候,就抛出异常
* Propagation.REQUIRES_NEW:创建新事务,无论当前是否有事务都会创建新的
* isolation=Isolation.DEFAULT:事务的隔离级别:默认是数据库的隔离级别
*
*/
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
public int insert(Team team){
int res1 = teamDao.insert(team);
System.out.println(res1);
//System.out.println(10/0);
int res2 = teamDao.insert(team);
System.out.println(res2);
return res2;
}
<context:component-scan base-package="com.jinhuan"/>
<!--配置事务-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--注解实现事务-->
<tx:annotation-driven transaction-manager="transactionManager"/>
@Test
public void test01(){
ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml");
TeamService teamService = (TeamService) ac.getBean("teamService");
int num1 = teamService.insert(new Team("name1", "0101"));
}
基于XML实现Spring的事务管理
pom文件中添加依赖
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.6</version>
</dependency>
<!--
这一个与下一个依赖一样,都是aspectj的注解依赖未生效
-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.13.RELEASE</version>
</dependency>
<!--配置事务-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--基于xml实现事务-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="pt" expression="execution(* com.jinhuan.service..*.insert(..))"/>
<aop:advisor pointcut-ref="pt" advice-ref="txAdvice"/>
</aop:config>