spring学习笔记(24)基于注解配置事务
来源:互联网 发布:软件许可 编辑:程序博客网 时间:2024/06/05 04:20
使用注解的方式配置事务极为便利,在xml文件上只需声明我们的注解,然后即可直接在相应service类通过标注注解来完成事务配置。相对于配置在xml文件,简洁了需要,但配置信息分散,会导致易读性大大减弱。
使用步骤:
1. 在spring容器中注册注解搜索器
目的是使分散在各业务类中的注解得以生效
<!-- 使用annotation定义事务 --><tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
这里引用了我们之前文章实例中配置好的hibernate对应事务管理器,同时将proxy-target-class设为true来强制使用CGLib代理。
2. @Transactional注解位置
@Transactional是我们的事务注解,标注了该注解的目标都会被注入事务。它可以注解在接口定义、接口方法、类定义、类的public方法上,但有一下两点是需要注意的:
1. 如果我们需要想为我们的特定方法配置细粒度的事务,可在类已标注注解的基础上再在方法上标注@Transactional。这样会覆盖类定义上的注解
2. @Transactional 只能被应用到public方法上, 对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能.
2. Spring建议在业务实现类而不在上使用@Transactional注解。由于注解不能被继承,故业务接口标注的@Transactional注解 不会被业务实现类继承,如果我们在配置<tx:annotation-driven>
时将proxy-target-class设为true,则业务类不会添加事务增强,照样工作在非事务的环境下。而如果我们的proxy-target-class设为false,则可能出现错误:
java.lang.ClassCastException: com.sun.proxy.$Proxy11 cannot be cast to com.yc.service.MyBaseServiceImpl
@Transactional常用属性说明
使用不同的事务管理器
如果我们需要使用到不同的事务管理器,如:
bean id="transactionManager1" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> <qualifier value="transactionManager1" /></bean><bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> <qualifier value="transactionManager2" /></bean>
在这里我们,配置了两个事务管理器,然后使用qualifier标签为其起了一个名字。然后,在我们的业务实现类中,我们可以使用如下注解来声明使用哪个事务管理器:
@Transactional("sessionFactory1")public void method1(){ ....}@Transactional("sessionFactory2")public void method2(){ ....}
另一方面,如果我们有很多方法都要用到同一个事务管理器,如果每个在标注@Transactional注解都加上名字就会略显繁琐,我们可以通过如下方式自定义一个新的注解来满足我们需求:
@Transactional("sessionFactory1")public @interface Transactional1 {}
这样,我们就可以使用@Transactional1来取代@Transactional(“sessionFactory1”)了。
- spring学习笔记(24)基于注解配置事务
- 【Spring】Spring下配置注解事务学习笔记
- Spring 事务基于注解方式的配置
- Spring学习笔记---2.2-基于注解的配置
- spring学习笔记 -- day04 基于注解的配置
- spring mvc+mybatis+ spring 基于全注解事务配置
- Spring注解事务配置
- spring 注解事务配置
- spring配置,事务,注解
- spring学习笔记10--Spring+jdbc组合开发(注解方式配置事务)
- service层spring事务配置(基于注解)
- spring 基于注解的事务
- 基于注解的Spring MVC 学习笔记
- spring学习笔记12----Spring+jdbc组合开发( 采用基于xml方式配置事务)
- Spring学习笔记(15)----使用Spring注解方式管理事务
- Spring学习笔记(17)----使用Spring注解方式管理事务
- Spring学习笔记(17)----使用Spring注解方式管理事务
- Spring(四)基于注解配置IOC容器&基于注解实现声明式事务
- MaterialDesign之CoordinatorLayout学习笔记(二)
- SGU414 Orthogonal Circles
- JavaScript语法基础
- 龙书D3D11章节习题答案(第四章)
- PAT (Advanced Level) Practise 1103 Integer Factorization (30)
- spring学习笔记(24)基于注解配置事务
- 弦月下的SQL<7> 游标和事务
- codevs 1041 Car 的旅行路线 最短路+代码能力
- POJ 1195 Mobile phones(二维树状数组)
- Hibernate主键生成策略的类型的使用说明
- 第4周项目1 求最大公约数
- js中this指向总结
- 弦月下的SQL<8> SQL存储过程和触发器代码
- JDBC连接SqlServer