大佬看下吧,事务不生效,我实在是看不出来哪里错啦

Red_Flag_ 2019-07-05 11:40:38
service:
```java
@Transactional(rollbackFor = Exception.class)
public List<Account> findAll() {
System.out.println("Servce:findAll-----------------");
Account account=new Account();
account.setMoney(2000);
account.setName("hahahah");
accountDao.save(account);
System.out.println(accountDao.findAll());
String string = null;
if(string.equals("")) {
int i = 0;
}
if(true){
throw new RuntimeException();
}
return null;
}
```
xml:
```
<context:property-placeholder location="classpath:jdbc.properties" />
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="driverClass" value="${jdbc.driver}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
<property name="basePackage" value="cn.jade.Dao"/>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 配置基于注解的声明式事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />
```
...全文
113 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
脐橙_ 2019-07-13
  • 打赏
  • 举报
回复
当初我也出现过这个问题,愣是找不出原因,后来找到扫描的原因,所以解决了。 之后如果整合缓存和校验框架也需要注意加载注解版填写的位置,写在不同配置也会影响到了是否有效。
脐橙_ 2019-07-13
  • 打赏
  • 举报
回复
这个可能发生在容器扫描的问题。你可以在SpringMVC配置文件只扫描只扫描Controller包,Spring主配置文件扫描。 因为spring的context是父子容器,ContextLoaderListener监听器加载spring配置文件,产生的是父容器,mvc加载mvc的配置文件,产生了子容器,子容器对@Controller进行装配扫描时,也装配了@Service注解的实例,因为在@Contoller实例依赖@Service实例,而@Service注解的实例,也就是一般的事务控制层,应该是有父容器初始化,以保证事务的增强处理,否则会事务事务处理能力 还有一点,如果是mysql,数据库表所使用的引擎必须是INNODB事务才起作用
Monday_@@ 2019-07-09
  • 打赏
  • 举报
回复
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 是不是class属性的值错误了

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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