Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 交易不存在';t适用于弹簧靴+;Mybatis_Java_Spring_Mybatis - Fatal编程技术网

Java 交易不存在';t适用于弹簧靴+;Mybatis

Java 交易不存在';t适用于弹簧靴+;Mybatis,java,spring,mybatis,Java,Spring,Mybatis,我的应用程序使用SpringBoot+MyBatis,当我使用@Transactional注释时,它不会在抛出异常时回滚 我的MybatisConfiguration.java是: @Configuration @EnableTransactionManagement @MapperScan("com.mode.dao") public class MybatisConfiguration implements EnvironmentAware { private RelaxedPro

我的应用程序使用SpringBoot+MyBatis,当我使用@Transactional注释时,它不会在抛出异常时回滚

我的MybatisConfiguration.java是:

@Configuration
@EnableTransactionManagement
@MapperScan("com.mode.dao")
public class MybatisConfiguration implements EnvironmentAware {

    private RelaxedPropertyResolver properties;

    @Override
    public void setEnvironment(Environment env) {
        this.properties = new RelaxedPropertyResolver(env, "mode.jdbc.");
    }

    @Bean(name = "datasource", destroyMethod = "close", initMethod = "init")
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(properties.getProperty("driverClassName"));
        dataSource.setUrl(properties.getProperty("url"));
        dataSource.setUsername(properties.getProperty("username"));
        dataSource.setPassword(properties.getProperty("password"));
        dataSource.setMaxActive(properties.getProperty("maxActive", Integer.class, 1));
        dataSource.setInitialSize(properties.getProperty("initialSize", Integer.class, 1));
        return dataSource;
    }

    @Bean
    public DataSourceTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource());
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        return sessionFactory.getObject();
    }
}
@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}
服务代码快照为:

@Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
    public Map<String, String> productImport(Product product) throws Exception {
        .....
  }
build.gradle是:

// Spring Boot MVC
compile("org.springframework.boot:spring-boot-starter-web")
// Spring Boot jdbc
compile("org.springframework.boot:spring-boot-starter-jdbc")
// Mybatis
compile("org.mybatis:mybatis:${mybatisVersion}")
compile("org.mybatis:mybatis-spring:${mybatisSpringVersion}")
我以前使用过spring+mybatis,@Transactional注释工作得很好,但当我改为spring boot时,它就不工作了


任何帮助或想法将不胜感激,提前感谢

您确定没有从其他具有不同
rollback或
设置或捕获异常的方法调用不回滚的方法吗?也就是说,您确定事务边界是由有问题的方法定义的吗?它不会从任何其他具有不同回滚的方法调用,我直接从不包含任何@Transactional注释的controller调用此方法。