调试spring中事务时碰到的两个潜在的可能导致事务不生效的配置
包扫描
在springmv.xml与applicationContext.xml中,对于context:component-scan属性所扫描的包应该避免重复
springmvc.xml中的配置:
<!--配置包扫描-->
<context:component-scan base-package="com.java.controller" />
applicationContext.xml中的配置:
<!--配置包扫描-->
<context:component-scan base-package="com.zhj.service" />
不额外扫描其他不包含bean的包
事务注解配置
spring事务默认只处理RuntimeException,若需要处理Exception的子类,可以如下配置
@Transactional(rollbackFor = Exception.class)
导致事务不生效的原因可能还有很多,例如数据库引擎不支持(例如mysql需要innodb引擎可以支持事务,myisam不支持),spring的xml配置文件没有导入相应xsi:schemaLocation,在此无法一一列举