`
zuishengmengsi1990
  • 浏览: 10665 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

多数据源使用spring test

阅读更多
正确做法:
1.基础Test类

@ContextConfiguration(locations={"classpath:applicationContext.xml"})
@TransactionConfiguration(defaultRollback=false)
public class TestBase extends AbstractTransactionalJUnit4SpringContextTests{

@Override
@Resource(name="gameDataSource")
public void setDataSource(DataSource dataSource) {
super.setDataSource(dataSource);
}

}

2.继承的类

@TransactionConfiguration(transactionManager="gameTransactionManager",defaultRollback=false)
public class MenuBoTest extends TestBase{

@Autowired
private MenuInfoBo menuInfoBo;

@Test
public void test(){
MenuInfo menuInfo=new MenuInfo();
menuInfo.setMenuName("本地游戏");
menuInfo.setMenuOpenType(1);
menuInfo.setMenuOrder(1);
menuInfoBo.add(menuInfo);
}

}

遇到的问题:
1.继承类MenuBoTest开始没有配注解@TransactionConfiguration
执行的时候会报错 显示No bean named 'transactionManager' is defined

源代码如下
private TransactionConfigurationAttributes retrieveTransactionConfigurationAttributes(Class<?> clazz) { 
        Class<TransactionConfiguration> annotationType = TransactionConfiguration.class; 
        TransactionConfiguration config = clazz.getAnnotation(annotationType); 
        if (logger.isDebugEnabled()) { 
            logger.debug("Retrieved @TransactionConfiguration [" + config + "] for test class [" + clazz + "]"); 
        } 
 
        String transactionManagerName; 
        boolean defaultRollback; 
        if (config != null) { 
            transactionManagerName = config.transactionManager(); 
            defaultRollback = config.defaultRollback(); 
        } 
        else { 
            transactionManagerName = (String) AnnotationUtils.getDefaultValue(annotationType, "transactionManager"); 
            defaultRollback = (Boolean) AnnotationUtils.getDefaultValue(annotationType, "defaultRollback"); 
        } 
 
        TransactionConfigurationAttributes configAttributes = 
                new TransactionConfigurationAttributes(transactionManagerName, defaultRollback); 
        if (logger.isDebugEnabled()) { 
            logger.debug("Retrieved TransactionConfigurationAttributes [" + configAttributes + "] for class [" + clazz + "]"); 
        } 
        return configAttributes; 
    } 

执行的时候默认会加上事务,事务的bean是transactionManager,因为配置中没有这个bean所以会抛出这个异常。解决办法就是在继承类上加上注解@TransactionConfiguration(transactionManager="gameTransactionManager"),使用配置已经配过的这个gameTransactionManager。

2.经过上面的步骤测试又出现问题,可以查询但是不能进行增删改的操作,猜测原因可能是事务回滚造成的,所以在继承类加上defaultRollback=false,重新测试成功。
分享到:
评论

相关推荐

    mybatis+spring实现动态切换数据源

    mybatis+spring实现动态切换数据源,修改数据源配置信息之后,直接运行test可进行测试

    Spring Boot MyBatis配置Druid多数据源oracle《--》mysql test finally.rar

    参考这个https://mrbird.cc/Spring-Boot-MyBatis Druid.html做的 配置多个数据源同时访问mysql和oracle数据库 互相交换数据 个人学习用 仅供参考 欢迎指教

    mybatis+spring实现动态切换数据源 maven项目

    mybatis+spring实现动态切换数据源,修改数据源配置信息之后,直接运行test可进行测试 maven项目 导入即可 jar包都不用 适合学习参考 出自Java自学网 (Java自学网专供 就是免积分下载)

    springTest新闻发布

    springTest新闻发布 这个是用spring 的dao模板 数据源是用 spring 提供的数据源配合的 用到了事务 功能有 游客的浏览新闻 会员的发布新闻 删除新闻等

    spring boot继承mybatis框架以及多数据源

    该项目是一个maven project项目,module test1主要spring boot的简单搭建以及与mybatis的集成,module test2主要是多数据源的构建。

    springboot +mongodb多数据源

    spring.data.primary.mongodb.uri= mongodb://192.168.10.136:27017/eqt #spring.data.secondary.mongodb.uri= mongodb:...切换mongodb数据源 可以同一台机器,或者不同机器 实现动态插入 。 该例是根据companyId来处理

    spring-boot-config-datasource-test

    spring-boot-config-datasource-test 显示使用@RefreshScope和使用 spring-boot 的条件 bean 定义时出现问题的示例。 它是一个基本的应用... 有两个数据源,但应该只有一个,因为不应创建提供的 spring-boot 之一。

    【springboot专题】二十 springboot中如何配置多数据源

    环境单个数据源sql脚本搭建项目pom.xml依赖application.ymldaocontrollerspringboot入口访问网站多个数据源(分包)项目改造pom.xmlapplicaion.ymlconfig配置数据源配置1数据源配置2实体类dao类和mappertest1包test2包...

    springboot整合jta实现多数据源事务管理

    博客上有很多类似的,很多都有点小错误。还是自己搭建测试的好用。resource中有sql,自己创建两个数据库导入sql,即可运行test测试

    基于框架的Web开发-使用springJDBC入门.doc

    (4) dbcp数据源:commons-dbcp、commons-pool (5) junit: junit、hamcrest (6) mysql 驱动 2 数据库准备 本章文件夹下有sampledb.sql文件,将其导入mysql中,会创建一个数据库sampledb,包含两张数据表。导入方法如...

    SSM+websocket+freemarker+mybatis分页插件+多数据源实现

    多数据源部分代码,直接运行beta\src\main\java\org\springframework\jdbc\datasource\lookup下Test的main方法,可根据业务开放接口

    自己弄的三层框架Spring.net,Remoting

    使用Spring.Net IoC注入数据访问层, 发布为Remoting服务, 供Web层调用. 3, Web 实现UI, 组织数据提交WebService处理. 层与层之间是独立的. 声明: 本框架仅做为个人研究使用, 若有任何问题或因使用产生的任何损失...

    springEmbeddedTomcatJNDI:Spring Boot 2.x嵌入式tomcat JNDI数据源(开发配置文件)+ WAR

    Spring Boot 2.x嵌入式tomcat JNDI数据源(开发配置文件)+ WAR 该代码旨在通过JNDI数据源查找保持数据库访问。 在开发中,使用配置了JNDI数据源的嵌入式tomcat运行在部署为WAR时,它将在服务器上查找真实的JDNI...

    springboot-multiple-dataSources:这是一个为Spring Boot自动切换数据源的示例

    spring-boot多数据源自动切换示例项目,利用spring aop切面,自动切换数据源。 CommonServiceImpl是公共处理类,Test1ServiceImpl和Test2ServiceImpl是两个数据源分别的业务处理类。定义为DataSourceAspect类处理切...

    multiple-mybatis:适用于读写分离的多数据源项目

    默认为master数据源,使用注解@ReadOnly实现数据源切换为slave数据源,同时函数执行完后会换回master数据源。使用1.引入starter将代码拉到本地编译:mvn install -Dmaven.test.skip=true.完成后在自己项目pom文件...

    spring security 参考手册中文版

    第七部分 Spring数据集成 273 38. Spring Data&Spring安全配置 273 39. @Query中的安全表达式 273 第八部分 附录 274 40.安全数据库模式 274 40.1用户模式 274 40.1.1集团当局 274 40.2持久登录(记得我)架构 275 ...

    datasource:持久层

    数据源 持久层 Mybatis ①JDK8 ②MyBatis3.4.7源码在别的项目中引用调试MyBatis源码(JDK8 +允许ognl / javassist传递依赖) java_mybatis ①JDK8 ②Java直接整合MyBatis在Java中直接使用MyBatis框架需要读取...

    springmybatis

    而且也比较轻量级,因为当时在项目中,没来的及做很很多笔记。后来项目结束了,我也没写总结文档。已经过去好久了。但最近突然又对这个ORM 工具感兴趣。因为接下来自己的项目中很有可能采用这个ORM工具。所以在此...

    struts2+Hibernate+Spring学习示例

    5、tomcate数据源配置 见 tomcat配置.txt //这个项目用不着了 6、创建了专门的数据库操作工具类 DBUtil、专门的DAO管理工具DAOManager 7、实现了CRUD的基本操作 8、struts2基本标签的使用 9、struts2的Action实现,...

    JavaEE求职简历-姓名-JAVA开发工程师.docx

    3.项目后台管理系统使用Shiro实现登录验证和权限管理(超级管理员、管理员、产品编辑员),iBatis动态sql语句编写及性能优化实现快速维护数据功能,Drui作为数据源,SpringTest+JUnit简化DAO层数据访问测试、Ea

Global site tag (gtag.js) - Google Analytics