分享:技术:数据源:spring_mybatis_多数据源配置_2
这是本文档旧的修订版!
Spring+Mybatis 多数据源配置_2
方法描述
采用spring配置文件配置动态数据源,利于强大的AOP切面,根据service实现类的自定义注解或者指定参数判断,在spring事务管理获取动态数据源之前,设置我们希望连接的数据源,从而灵活配置
优缺点
一套统一配置,通过注解或者入参来灵活判断设置数据源,代码级别判断,配置不需要动,方便可控
不仅适合两个数据库没有相关性的情况,而且还适合master-slave性的多数据源的配置
vo,dao,mapper,service仅需要一套
碰到的坑
spring-mvc对controller的扫描路径一定要写到web不能把sevice包含进去,或者指定扫描@Controller注解,否则会把service扫进去,那spring事务管理扫面将不起作用
事务管理注解驱动[transaction]一定要配置在AOP切面[transactionPointcut](事务管理获取动态数据源)之前,否则注解会无效
xml中如果已经配置事务transactionAdvice,service方法上可以不配置注解
如果在事务中抛出异常Exception,则会回滚,不需要配置rollback-for=“Exception”
AOP切面[dataSourceAspect](动态设置数据源)一定要配置在AOP切面[transactionPointcut](事务管理获取动态数据源)之前,否则先获取完再设置数据源会无效
暂未解决
使用自定义注解打在service的方法上,不知道为啥,切面里获取不到注解。但是,换了一种方法,使用入参送入枚举,切面里获取入参判断枚举值来设置数据源,可以搞定!
主要代码
application-context.xml
分享/技术/数据源/spring_mybatis_多数据源配置_2.1452579353.txt.gz · 最后更改: 2016/01/12 14:15 由 gxx