博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
说说在 Spring 中,如何基于 XML 来配置事务
阅读量:5745 次
发布时间:2019-06-18

本文共 1794 字,大约阅读时间需要 5 分钟。

我们大都选择使用声明式(XML 或者注解)来配置事务,因为这种方式对代码的侵入最小。特别是 XML 方式的配置,可以让事务管理配置信息从业务代码中完全移除。

Spring 的声明式事务管理是通过 AOP 实现的。 Spring 会读取事务的声明配置,将事务管理的增强逻辑,动态织入到业务方法的相应连接点中 。

Spring 2.0 之后引入了 AspectJ 切面定义语言,所以我们可以基于 aop/tx 命名空间来配置事务。

假设有这样的一个 UserService 类:

@Servicepublic class UserService {    @Autowired    private UserDao userDao;    /**     * 新增     *     * @param user     */    public int addUser(final User user) {        return userDao.save(user);    }    /**     * 依据 Id,获取账号     *     * @param userId     * @return     */    public User getUser(Long userId) {        return userDao.get(userId);    }    /**     * 更新账号所对应的密码     *  @param userId     * @param pwd     */    public int update(Long userId, String pwd) {        return userDao.update(userId, pwd);    }}复制代码

希望让 get***() 方法拥有只读事务,其它方法拥有写事务。对这一业务要求,我们可以使用 aop/tx 命名空间来配置。

spring_tx.xml:

复制代码

在 aop 命名空间中,通过切点表达式,将 net.deniro.xxx.transaction.xml.UserService 中的所有方法,都纳入了事务增强的管理范围。

其中,最关键的是 <tx:method> 元素,它拥有如下属性:

属性 是否必须 默认值 说明
name 必须 相关联的方法名。可以使用通配符(*)。 形如:get*、add* 等。
propagation - REQUIRED 事务传播行为,可选值为:REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED
isolation - DEFAULT 事务隔离级别,可选值为:DEFAULT、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE
timeout - -1 事务超时时间(单位为 s)。如果为 -1,则事务的超时时间由底层事务系统决定。
read-only - false 是否只读
rollback-for - 所有运行期异常,都回滚 触发事务回滚的 Excepiton 名称,多个以逗号隔开。
norollback-for 所有检查型异常,都不回滚 不触发事务回滚的 Excepiton 名称,多个以逗号隔开。

基于 aop/tx 来配置声明式事务管理,是实际项目中最常使用的配置方式,因为它的表达能力最强而且使用也最为灵活 。

转载于:https://juejin.im/post/5cb2db7f5188257111726025

你可能感兴趣的文章
服务的使用
查看>>
Oracle 用户与模式
查看>>
MairDB 初始数据库与表 (二)
查看>>
拥在怀里
查看>>
chm文件打开,有目录无内容
查看>>
whereis、find、which、locate的区别
查看>>
一点不懂到小白的linux系统运维经历分享
查看>>
桌面支持--打不开网页上的pdf附件解决办法(ie-tools-compatibility)
查看>>
nagios监控windows 改了NSclient++默认端口 注意事项
查看>>
干货 | JAVA代码引起的NATIVE野指针问题(上)
查看>>
POI getDataFormat() 格式对照
查看>>
Python 中的进程、线程、协程、同步、异步、回调
查看>>
好的产品原型具有哪些特点?
查看>>
实现java导出文件弹出下载框让用户选择路径
查看>>
刨根问底--技术--jsoup登陆网站
查看>>
OSChina 五一劳动节乱弹 ——女孩子晚上不要出门,发生了这样的事情
查看>>
Spring--通过注解来配置bean
查看>>
pandas 十分钟入门
查看>>
nginx rewrite
查看>>
前端安全系列(一):如何防止XSS攻击?
查看>>