项目采用mybatis + spring开发,这是以前的测试代码, 【运行需要30s】
private static MemberService memberService;
@BeforeClass
public static void setUp() throws Exception{
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
memberService = (MemberService)context.getBean("memberService");
这种方式的不好,要实例化整个spring容器,如果项目很大,一个单元测试运行的时间将会很长;
下面我把myBatis从spring进行分离,分离后进行单元测试速度很快:下面是改进后的测试类,【运行只需3s】
private static MemberService memberService;
@BeforeClass
public static void setUp() throws Exception{
MemberDao memberDao = new MemberDao();
memberDao.setMemberMapper((MemberMapper)SessionFactory.getMapper(MemberMapper.class));
MemberServiceImpl memberServiceimpl = new MemberServiceImpl();
memberServiceimpl.setMemberDao(memberDao);
memberService = memberServiceimpl;
1,configuration xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- changes from the defaults -->
<setting name="lazyLoadingEnabled" value="false" />
</settings>
<typeAliases>
<!-- 会员实体begin -->
<typeAlias alias="member" type="com.***.project.member.domain.Member" />
<!-- 会员实体end -->
</typeAliases>
<plugins>
<!-- 指定数据库分页方言Dialect, 其它方言:OracleDialect,SQLServerDialect,SybaseDialect,DB2Dialect,PostgreSQLDialect,MySQLDialect,DerbyDialect-->
<plugin interceptor="com.***.project.common.mybatis.interceptor.OffsetLimitInterceptor">
<property name="dialectClass" value="com.***.project.common.mybatis.dialect.OracleDialect"/>
</plugin>
</plugins>
<environments default="develop">
<environment id="develop">
<transactionManager type="com.***.project.utils.TransactionManager">
</transactionManager>
<dataSource type="POOLED" >
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@****:***" />
<property name="username" value="***" />
<property name="password" value="***" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mappers/MemberMapper.xml"/>
</mappers>
</configuration>
2, TransactionManager类 自定义事务管理,主要是用作自动提交,autoCommit
public class TransactionManager implements TransactionFactory {
@Override
public Transaction newTransaction(Connection conn, boolean autoCommit) {
Transaction tx = new JdbcTransaction(conn, true);
return tx;
}
@Override
public void setProperties(Properties arg0) {
}
}
3,下面是我的核心类 ,主要是获取sqlSession与Mapper接口
public class SessionFactory {
private static SqlSessionFactory sessionFactory;
private SessionFactory(){
}
static{
String resource = "com/***/project/utils/mybatis.xml";
Reader reader;
try {
reader = Resources.getResourceAsReader(resource);
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sessionFactory.openSession();
}
public static Object getMapper(Class cls){
return MapperProxy.newMapperProxy(cls, getSqlSession());
}
}
小结:把dao层分离可以进行快速的单元测试(严格来说是集成测试),但如果自动化运行所有的测试,也可以直接从spring容器中获取service进行测试,可参昭我的文章http://mingliang-luo.iteye.com/blog/1237351
分享到:
相关推荐
这个“mybatis与spring整合全部jar包”包含了这三个框架整合所需的所有依赖库,使得开发者可以快速搭建SSM项目。 首先,让我们深入了解一下这三个组件: 1. **Spring**:Spring 是一个全面的Java企业级应用开发...
此外,这种整合还带来了更好的测试性,因为我们可以轻松地对单个Mapper接口进行单元测试。 这个实例中的"mybatis整合spring实例(完整版)"文件可能包含了上述所有步骤的源代码,包括Spring的配置文件、MyBatis的...
总的来说,这个压缩包提供的组件是构建基于Mybatis和Spring的Java Web应用的基础,通过它们可以轻松实现数据访问层与业务逻辑层的分离,提高代码的可维护性和可测试性。同时,Mybatis-Spring的整合使得两者的协同...
Mybatis-Spring也支持使用TestNG进行集成测试,模拟数据库交互。 9. **日志管理**:项目可能包含日志配置,如log4j或logback,用于记录应用程序的运行信息,帮助调试和优化。 10. **数据库连接池**:为了提高性能...
在测试阶段,你可以使用Spring的TestContext框架,创建一个测试类,通过@Autowired注解注入需要的Bean,进行单元测试或者集成测试,验证MyBatis和Spring的整合是否成功。 总之,这个"MyBatis+Spring+Maven的简单...
9. **单元测试**:整合后的项目更容易编写单元测试,通过Spring的TestContext框架,可以方便地模拟数据源和事务环境,进行数据库操作的测试。 10. **性能优化**:整合MyBatis和Spring可以利用Spring的缓存机制,...
### MyBatis 实现读写分离 #### 一、读写分离的概念与优势 在数据库设计与应用领域,“读写分离”...通过以上步骤和技术细节,可以有效地利用 MyBatis 和 Spring 实现数据库的读写分离,进而提升系统的性能和稳定性。
通过以上步骤,MyBatis和Spring就能成功整合,开发者可以在不编写任何DAO类的情况下,直接使用Mapper接口进行数据库操作。这种方式提高了代码的可读性和可维护性,同时也使得业务逻辑与数据访问层分离,符合Spring...
MyBatis、Spring和SpringMVC是Java开发中三大核心框架,它们的整合使得企业级应用的开发变得更加高效和便捷。下面将详细讲解这三个框架以及它们整合的关键知识点。 MyBatis是一个优秀的持久层框架,它支持定制化SQL...
6. **支持 Spring 的测试框架**: 在测试环境中,MyBatis-Spring 可以帮助快速设置和清理数据库状态,便于单元测试。 使用 mybatis-spring-1.1.0.zip,你需要解压文件并将其包含的 JAR 文件添加到你的项目类路径中。...
3. 提高代码的可测试性,通过Spring的Mock对象可以方便地进行单元测试。 四、整合步骤 1. 添加依赖:在项目的pom.xml或build.gradle文件中添加mybatis-spring和mybatis、spring的相关依赖。 2. 配置...
这有助于开发者快速搭建测试环境,验证MyBatis与Spring Boot集成后的功能是否正常运行。 `spring-boot-MyBatis`这个文件可能是项目的主要源代码包,其中应该包含了Spring Boot的配置文件(如`application.yml`或`...
SSM(Spring、Spring MVC、MyBatis...这个压缩包提供的jar包涵盖了SSM整合所需的全部基础库,包括Spring、Spring MVC、MyBatis以及它们的依赖,使得开发者可以快速搭建起一个完整的开发环境,进行Java Web应用的开发。
这些jar包涵盖了运行Spring、Mybatis和Spring MVC应用所需的全部依赖,可以帮助开发者快速搭建一个包含数据库访问、业务逻辑处理和Web接口的完整系统。 在使用这个整合包时,开发者首先需要配置Spring的上下文文件...
6. **测试**:通过Spring的测试框架或者JUnit进行集成测试,验证Mybatis和Spring的整合是否成功。 在"mybatis与spring整合全部jar包(包括springmvc)"的压缩包中,你可能会找到以下关键的jar文件: - `mybatis-x.x....
- 利用Spring的@Test注解编写单元测试,对数据访问层进行独立测试。 - 使用Mockito等工具模拟数据源,避免实际数据库操作,提高测试效率。 - 结合日志工具(如Log4j或Logback),跟踪和分析程序运行状态。 通过...
【标题】"MAVEN-Mybatis+spring+springMVC" 涵盖了现代Java Web开发中的核心组件,这是一个基于Maven构建的项目,它整合了Mybatis、Spring和Spring MVC三大框架,用于实现高效、灵活且可维护的Web应用。 **1. Maven...
8. **测试支持**:Spring Test模块提供了一套完整的测试框架,可以帮助开发者编写针对MyBatis和Spring集成的单元测试和集成测试,通过模拟数据库环境,保证代码的正确性。 9. **最佳实践**:在实际开发中,为了提高...
在这个压缩包文件`mybatis-spring-demo`中,很可能是提供了一个完整的示例项目,帮助开发者理解如何将MyBatis与Spring进行集成。 MyBatis是一个轻量级的ORM(对象关系映射)框架,它允许开发者通过SQL语句直接操作...