首先给大家大致介绍一下我的项目配置
如下图
下图是事物的配置
简单介绍一下上图
1、事物管理器:spring自带的事物管理,需要声明对那个数据源进行管理即可;
2、通知:配置主动匹配哪些方法,对什么格式命名的方法起作用;
3、切面配置:使用这样的配置声明对那些包中的类进行扫描切面事物;
下图是我简单的业务逻辑
上面的事物配置是经过测试并且成功的
本人最先碰到了错误是因为一般我们在Spring的配置文件中对Service层代码配置事务管理,可以对Service的方法进行AOP增强或事务处理如事务回滚,但是遇到一个问题,在Controller类中调用Service层方法,配置的事务管理会失效,查询相关资料发现原因。其实Spring和SpringMVC俩个容器为父子关系,Spring为父容器,而SpringMVC为子容器。也就是说SpringMVC.xml中应该负责扫描除@Controller的注解如@Service,而SpringMVC的配置文件应该只负责扫描@Controller,否则会产生重复扫描导致Spring容器中配置的事务失效。