1、问题现象

报错:No bean named ‘transactionManager’ available: No matching PlatformTransactionManager bean found for
在这里插入图片描述

2、问题原因

项目中采用的了2个数据源,所以将配置文件中的id为transactionManager重命名了,例如改成了sysTransactionManager。在service层的imp层的代码里加了注解@Transactional,但是@Transactional注解中的默认值是transactionManager

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Transactional {
    @AliasFor("transactionManager")
    String value() default "";

    @AliasFor("value")
    String transactionManager() default "";

    Propagation propagation() default Propagation.REQUIRED;

    Isolation isolation() default Isolation.DEFAULT;

3、解决方案

3.1 修改事务管理器配置的事务id为transactionManager

<!-- 事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 注册事务管理驱动 -->
<tx:annotation-driven transaction-manager="transactionManager"/>

3.2 @Transactional注解中赋值transactionManager

@Transactional(transactionManager="sysTransactionManager")
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐