Spring中<tx:jtaTransactionManager/>的JTA事务管理器默认名与修改规则
Spring 5.1.3 版本JTA事务管理器配置说明
基础配置行为
<tx:jta-transaction-manager/>是Spring tx命名空间提供的快捷配置元素,适用于WebLogic、WebSphere等标准应用服务器场景,配置后会自动探测底层运行环境,匹配对应平台最优的JTA事务管理器实现。- 注意配置时的元素名称为全小写带连字符的
jta-transaction-manager,写成驼峰的jtaTransactionManager会触发配置解析异常。 - 该元素不暴露自定义Bean名称的配置入口,注册到Spring容器的事务管理器默认Bean名称硬编码为
transactionManager,没有内置的属性可以直接修改这个默认名称。
多事务管理器共存的适配方案
Spring中@Transactional注解的value属性,支持直接指定需要绑定的事务管理器Bean名称,你示例中的写法逻辑完全符合规则,实际落地时可根据需求选择两种配置方式:
- 保留
<tx:jta-transaction-manager/>快捷配置- JTA事务管理器的Bean名称固定为
transactionManager - 手动声明本地事务管理器(如
DataSourceTransactionManager),将其Bean id设置为local - 注解绑定写法示例:
// 绑定JTA事务管理器 @Transactional("transactionManager") public void methodTest() { // 业务逻辑 } // 绑定本地事务管理器 @Transactional("local") public void methodTest1() { // 业务逻辑 }
- JTA事务管理器的Bean名称固定为
- 自定义JTA事务管理器的Bean名称
- 放弃使用
<tx:jta-transaction-manager/>快捷配置,手动声明JtaTransactionManager类型的Bean,将Bean id设置为你期望的jta - Spring初始化该Bean时会自动完成运行平台探测,匹配对应服务器的最优JTA事务管理器实现,和快捷配置的运行效果完全一致
- 此时注解绑定可以直接沿用你示例中的写法:
// 绑定自定义名称的JTA事务管理器 @Transactional("jta") public void methodTest() { // 业务逻辑 } // 绑定本地事务管理器 @Transactional("local") public void methodTest1() { // 业务逻辑 }
- 放弃使用
内容的提问来源于stack exchange,提问作者hamidreza75
相关产品推荐
相关产品推荐

