springboot 注解事务不能回滚

zhangjesse97 2017-11-20 04:23:23
@SpringBootApplication
@EnableTransactionManagement
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

configuration中的设置
@Bean
public DataSource dataSource() throws Exception {
Properties dataSourceProps = this.createDataSourceProperties();
DataSource dataSource = DruidDataSourceFactory.createDataSource(dataSourceProps);
return dataSource;
}

private Properties createDataSourceProperties() {
Properties dataSourceProps = new Properties();
dataSourceProps.put("driverClassName", env.getProperty(ConstantParam.DATASOURCE_DRIVERCLASS_KEY));
dataSourceProps.put("url", env.getProperty(ConstantParam.DATASOURCE_URL_KEY));
dataSourceProps.put("username", env.getProperty(ConstantParam.DATASOURCE_USER_KEY));
dataSourceProps.put("password", env.getProperty(ConstantParam.DATASOURCE_PASSWORD_KEY));
dataSourceProps.put("initialSize", env.getProperty(ConstantParam.DATASOURCE_INITIALSIZE_KEY));
dataSourceProps.put("maxActive", env.getProperty(ConstantParam.DATASOURCE_MAXACTIVE_KEY));
dataSourceProps.put("minIdle", env.getProperty(ConstantParam.DATASOURCE_MINIDELE_KEY));
dataSourceProps.put("maxWait", env.getProperty(ConstantParam.DATASOURCE_MAXWAIT_KEY));
dataSourceProps.put("removeAbandoned", env.getProperty(ConstantParam.DATASOURCE_REMOVEABANDONED_KEY));
dataSourceProps.put("removeAbandonedTimeout",
env.getProperty(ConstantParam.DATASOURCE_REMOVEABANDONED_TIMEOUT_KEY));
dataSourceProps.put("timeBetweenEvictionRunsMillis",
env.getProperty(ConstantParam.DATASOURCE_TIMEBETWEENEVICTION_RUNSMILLIS_KEY));
dataSourceProps.put("minEvictableIdleTimeMillis",
env.getProperty(ConstantParam.DATASOURCE_MINEVICTABKEIDLE_TIMEMILLIS_KEY));
dataSourceProps.put("validationQuery", env.getProperty(ConstantParam.DATASOURCE_VALIDATIONQUERY_KEY));
dataSourceProps.put("testWhileIdle", env.getProperty(ConstantParam.DATASOURCE_TESTWHILEIDLE_KEY));
dataSourceProps.put("testOnBorrow", env.getProperty(ConstantParam.DATASOURCE_TESTONBORROW_KEY));
dataSourceProps.put("testOnReturn", env.getProperty(ConstantParam.DATASOURCE_TESTONRETURN_KEY));
dataSourceProps.put("poolPreparedStatements",
env.getProperty(ConstantParam.DATASOURCE_POOLPREPAREDSTATEMENTS_KEY));
dataSourceProps.put("maxPoolPreparedStatementPerConnectionSize",
env.getProperty(ConstantParam.DATASOURCE_MAXPOOLPREPAREDSTATEMENTPERCONNECTIONSIZE_KEY));
dataSourceProps.put("filters", env.getProperty(ConstantParam.DATASOURCE_FILTERS_KEY));
dataSourceProps.put("connectionProperties", env.getProperty(ConstantParam.DATASOURCE_CONNECTIONPROPERTIES_KEY));
LOGGER.info("DataSource Properties : " + dataSourceProps.toString());
return dataSourceProps;
}

@Bean(name = "txManager")
@Primary
public DataSourceTransactionManager dataSourceTransactionManager() throws Exception {
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(dataSource());
return dataSourceTransactionManager;
}



service中的方法
@Transactional(rollbackFor = { Exception.class })
@Override
public void insert() {
userMapper.insertIntoUser();
System.out.println(0 / 0);
}

CREATE TABLE `tm_user` (
`user_id` INT(11) NOT NULL COMMENT '账号id',
`employee_id` INT(11) DEFAULT NULL COMMENT '主键ID',
`created_by` VARCHAR(30) COLLATE utf8_croatian_ci DEFAULT NULL COMMENT 'created_by',
`created_at` DATETIME DEFAULT NULL COMMENT 'created_at',
`updated_by` VARCHAR(30) COLLATE utf8_croatian_ci DEFAULT NULL COMMENT 'updated_by',
`updated_at` DATETIME DEFAULT NULL COMMENT 'updated_at',
PRIMARY KEY (`user_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_ci COMMENT='用户表'

为什么事务不回滚,还是能插入到数据库中?求解答!
...全文
470 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlm2014 2017-12-30
  • 打赏
  • 举报
回复
@zhangjesse97 解决好了吗?我也碰到同类问题
zhangjesse97 2017-12-04
  • 打赏
  • 举报
回复
csdn里面不是挺多大神的呢?说好的大神呢?

5,655

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧