`
zuishengmengsi1990
  • 浏览: 11169 次
  • 性别: 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,重新测试成功。
分享到:
评论

相关推荐

    SpringTest_springtest_spring_java_Framework_

    "SpringTest_springtest_spring_java_Framework_"这个标题暗示了我们讨论的是关于Spring框架的测试方面,可能是使用Spring进行单元测试或集成测试的一些实践。 描述中的“简单小应用,实现了一些基本的功能”可能是...

    spring数据源配置

    ### Spring 数据源配置详解 #### 一、Spring与数据源简介 在Java企业级应用开发中,数据库操作是必不可少的一部分。Spring框架作为一种流行的轻量级Java应用开发框架,提供了强大的数据库访问支持,其中包括对数据...

    spring mvc 配置多数据源

    本文将详细介绍如何在Spring MVC项目中配置并使用多数据源。 #### 1. 概述 在Spring MVC中配置多数据源通常涉及到以下几个步骤: - 在`application.properties`或`application.yml`文件中配置不同的数据源属性。 - ...

    springboot-AOP实现多数据源动态切换(Druid连接池)

    该技术的关键在于如何在同一个应用中配置和使用多个数据源,以及如何在运行时根据上下文动态切换数据源。本知识点将围绕使用Spring AOP和Druid连接池来实现这一目标进行详细说明。 首先,要实现多数据源动态切换,...

    springAop多数据源

    - 可以使用Spring的@Test注解和@MockBean来创建测试环境,模拟数据源切换,并验证AOP是否按预期工作。 总结来说,"springAop多数据源"项目涉及到Spring框架的多数据源配置、JdbcTemplate的使用、面向切面编程的...

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

    在`mybatis-spring`的配置中,我们指定使用Spring的`SqlSessionFactoryBean`,并将数据源设置为我们的动态数据源。 ```xml &lt;bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"&gt; &lt;!...

    Spring MySQL多数据源

    至于测试部分(test),在Spring Boot项目中,我们可以使用`@DataJpaTest`或`@WebMvcTest`来针对特定数据源进行单元测试。在测试类上添加`@ContextConfiguration`或`@Import`注解,加载相应的数据源配置,并通过`@...

    spring test

    对于数据源的处理,Spring Test提供了`@DataJpaTest`和`@Sql`注解。前者用于JPA和Hibernate的集成测试,它会自动配置一个内存数据库并加载实体。后者则允许你在测试前后执行SQL脚本,以准备或清理测试数据。 在...

    Spring-test做数据库操作的单元测试2-跨库访问

    综上所述,"Spring-test做数据库操作的单元测试2-跨库访问"这个主题涵盖了许多关键概念,包括Spring-test的运行机制、多数据源配置、事务管理以及测试的准备与清理。这些知识点对于开发涉及跨库操作的应用程序,确保...

    Spring下mybatis多数据源配置

    ### Spring 下 MyBatis 多数据源配置详解 在企业级应用开发中,经常会遇到需要同时操作多个数据库的情况。为了实现这一目标,开发者通常会采用多数据源配置的方法。本篇文章将详细介绍如何在Spring框架中配置...

    Spring Boot多数据源配置

    Spring Boot作为Java领域的一款微服务框架,提供了强大的数据源配置能力,使得开发者能够轻松处理多数据源的问题。本篇文章将详细介绍如何在Spring Boot中进行多数据源配置,以及与Mybatis框架的集成,包括Mybatis的...

    使用注解配置Spring多数据源

    在Spring框架中,多数据源配置是一项重要技术,它允许应用程序连接到多个数据库,从而实现数据...通过以上步骤,你可以成功地在Spring环境中配置和使用多数据源,同时结合restlet处理HTTP请求,以及mysql进行数据操作。

    Spring管理配置多个数据源

    在Spring框架中,管理多个数据源是一项常见的任务,特别是在大型分布式系统中,可能需要连接到不同的数据库以实现数据隔离或优化性能。这篇博客主要探讨了如何在Spring中配置和管理多个数据源,以便灵活地处理不同的...

    springboot+druid+mybatis多数据源动态切换案例

    8. **测试**:在名为`test`的文件中,可能包含了单元测试或集成测试代码,用于验证多数据源切换和读写分离的正确性。测试用例应该覆盖各种读写操作,确保在不同数据源间的切换无误。 理解并掌握这些知识点,开发者...

    spring boot 多数据源测试源码demo

    总结起来,这个源码示例展示了如何在Spring Boot项目中配置和管理多个数据源,使用JPA进行数据操作,并通过`@Qualifier`注解来选择正确的数据源。通过学习和实践这个示例,开发者可以更好地掌握Spring Boot在复杂...

    spring-test-3.2.0.RELEASE.jar

    4. **测试数据源:** `@Sql`注解可以用来在测试前后执行SQL脚本,用于初始化或清理数据库状态,确保测试的隔离性。同时,`@Transactional`注解可以开启事务,测试结束后自动回滚,避免对数据库造成影响。 5. **...

    Springboot+mybatis+druid多数据源配置(oracle+mybatis)

    总结,Spring Boot结合Mybatis和Druid实现多数据源配置的过程包括:配置数据源、配置Mybatis、创建数据源切换器、以及针对不同数据库的测试。这一过程涉及了Spring Boot的自动配置、依赖注入、配置属性绑定等多个...

    springboot +mybatis+oracle 配置多个数据源,配置两个数据库信息

    在Spring Boot中,我们可以使用Spring Boot的自动配置特性来简化数据源的配置。 1. **配置主数据源** 对于第一个数据库(主数据源),我们可以在`application.properties`或`application.yml`中设置相关的配置信息...

    spingboot多数据源配置实例

    在Spring Boot应用中,多数据源配置是一项关键的技术,它允许我们同时连接并操作多个数据库。这在诸如数据隔离、读写分离、分布式系统等场景下尤其有用。本实例将探讨如何在Spring Boot项目中实现多数据源配置,并...

    mybatis+spring+springtest

    1. **MyBatis集成**:首先,需要在Spring配置文件中配置MyBatis的SqlSessionFactory,指定配置文件和数据源。通过MyBatis的SqlSessionTemplate或者SqlSessionDaoSupport,可以在Service层创建DAO接口,并在XML文件中...

Global site tag (gtag.js) - Google Analytics