AOP的配置稍显复杂,通过
@Transactional注解,同样可以实现:
1. 在需要事务的类或方法上加
@Transactional:
如果是类上加注解,该类的所有public方法都会应用事务
如果是方法上加注解,该方法会应用事务。
在接口上加注解有风险,如果使用CGLIB(类代理)将不会启用事务。
2. 开启注解事务开关:
<tx:annotation-driven />
FruitShop实现:
public class AnnotationTxFruitShop extends JdbcDaoSupport implements FruitShop {
@Transactional // 可以设置传播级别、隔离级别、超时、只读、回滚策略
@Override
public boolean purchase(int fruitId, String userName, int count) {
// 此处和系列之四的AopTxFruitShop代码相同
}
}
beans-fruitshop-@.xml文件:
<tx:annotation-driven transaction-manager="txManager" />
<bean id="annotationTxFruitShop" class="com.john.tx.service.impl.AnnotationTxFruitShop">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- dataSource, txManager和之前的相同 -->
测试类和之前的类似:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/beans-fruitshop-@.xml" })
public class AnnotationTxFruitShopTest {
@Resource(name = "annotationTxFruitShop")
FruitShop annotationTxFruitShop;
@Test
public void test() {
...
}
}
附:
Spring底层也是通过AOP来实现对@Transactional注解事务的支持:
- 大小: 15.5 KB
分享到:
相关推荐
Spring3事务管理——使用@Transactional 注解.rar
本代码使用H2内存数据库演示spring事务使用,包括编程式事务,声明式事务@Transactional使用,自定义事务事务注解实现自定义事务管理器
Spring源码学习十二:@Transactional是如何工作的1
a、b方法都可以有不同的传播级别或者不加事务注解(none): required(rd), required_new(rn), never(nr), supports(ss), not_supoort(ns), mandatory(mt), nested(ne) a和b方法都可能抛异常,对于b方法抛出的异常,a...
声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,
主要介绍了Spring @Transactional注解失效解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1、aopalliance.jar 这个包是AOP联盟的API包,里面包含了针对面向切面的接口...2、aspectjrt.jar 处理事务和AOP所需的包 3、aspectjweaver.jar 处理事务和AOP所需的包 4、cglib-nodep.jar spring中自动代理所需jar包
注解实现声明式事务管理
在上添加@Transactional注解并不会完成事务切面的织入,还需要在配置文件中加一行配置,通知spring容器对标了@Transactional的bean进行处理,织入事务。 在applicationContext-tx.xml文件上加上tx:annotation-driven...
使用@Transactional注解时,可以通过参数配置事务详情: 5.2.2 基于Annotation方式的声明式事务 * * * * * * * * 声明式事务管理 如何实现Spring的声明式事务管理? 5.2 声明式事务管理 Spring的声明式事务管理可以...
声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,更清爽。spring注解事务实现demo
2、在使用事务的public(只有public支持事务)方法(或者类-相当于该类的所有public方法都使用)加上@Transactional注解。 在实际使用中一般是在service中使用@Transactional,那么对于controller->service流程中: ...
使用 tk-mybatis 的 demo 测试了 Spring 的事务 包含 @Transactional 注解所有的功能测试。
整理的分布式事务 及动态数据源切换 基于数据库XA协议 maven 包可直接使用 maven 引入路径: <groupId>com.maple</groupId> <artifactId>DCSDataSourcesServer <version>0.0.1-SNAPSHOT 事务及数据源标签...
主要介绍了Java注解@Transactional事务类内调用不生效问题及解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
TPI – TRANSACTIONAL PROCESS IMPROVEMENT 事务性流程改善 (DBS 工具)
事务内存(Transactional Memory)。在当前多核编程中,同步是一个关键的问题,事务是一个研究热点。本书讲述了相关技术。 本书为PDF的清晰非扫描版本,整个文件大小约为1.5M
Spring通过@Transactional注解以及底层的AOP和代理机制实现了声明式事务。这个机制允许开发者通过简单的注解就能控制事务的边界和规则,极大地简化了编程模型。在Spring中,事务管理是通过一系列的拦截器和事务管理...
主要介绍了spring的@Transactional注解用法解读,具有一定借鉴价值,需要的朋友可以参考下