diff --git a/mybatis-flex-spring-boot-starter/src/main/java/com/mybatisflex/spring/boot/FlexTransactionAutoConfiguration.java b/mybatis-flex-spring-boot-starter/src/main/java/com/mybatisflex/spring/boot/FlexTransactionAutoConfiguration.java index 32992267..364e985b 100644 --- a/mybatis-flex-spring-boot-starter/src/main/java/com/mybatisflex/spring/boot/FlexTransactionAutoConfiguration.java +++ b/mybatis-flex-spring-boot-starter/src/main/java/com/mybatisflex/spring/boot/FlexTransactionAutoConfiguration.java @@ -19,12 +19,17 @@ import com.mybatisflex.core.row.Db; import com.mybatisflex.spring.FlexTransactionManager; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.AutoConfigureOrder; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; import org.springframework.lang.NonNull; import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionManager; import org.springframework.transaction.annotation.TransactionManagementConfigurer; /** @@ -33,11 +38,18 @@ import org.springframework.transaction.annotation.TransactionManagementConfigure * @author michael */ @ConditionalOnClass(Db.class) +@ConditionalOnMissingBean(TransactionManager.class) @Configuration(proxyBeanMethods = false) +@AutoConfigureOrder(FlexTransactionAutoConfiguration.PRECEDENCE) @AutoConfigureAfter({MybatisFlexAutoConfiguration.class}) -@AutoConfigureBefore({TransactionAutoConfiguration.class}) +@AutoConfigureBefore({TransactionAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class}) public class FlexTransactionAutoConfiguration implements TransactionManagementConfigurer { + /** + * 优先级 + */ + protected static final int PRECEDENCE = Ordered.LOWEST_PRECEDENCE - 10; + /** * 这里使用 final 修饰属性是因为:
*