spring测试junit事务管理及spring面向接口注入和实现类单独注入(无实现接口),实现类实现接口而实现类单独注入否则会报错。

1.根据日志分析,spring junit默认是自动回滚,不对数据库做任何的操作。

18:16:57.648 [main] DEBUG o.s.j.d.DataSourceTransactionManager - Switching JDBC Connection [[email protected]] to manual commit
18:16:57.649 [main] DEBUG o.s.t.c.t.TransactionalTestExecutionListener - No method-level @Rollback override: using default rollback [true] for test context [DefaultTestContext[email protected] testClass = TransDispatchingServiceTest, testInstance = [email protected], testMethod = [email protected], testException = [null], mergedContextConfiguration = [[email protected] testClass = TransDispatchingServiceTest, locations = ‘{classpath:conf/applicationContext.xml}‘, classes = ‘{}‘, contextInitializerClasses = ‘[]‘, activeProfiles = ‘{}‘, contextLoader = ‘org.springframework.test.context.support.DelegatingSmartContextLoader‘, parent = [null]]].
18:16:57.649 [main] INFO  o.s.t.c.t.TransactionalTestExecutionListener - Began transaction (6) for test context [[email protected] testClass = TransDispatchingServiceTest, testInstance = [email protected], testMethod = [email protected], testException = [null], mergedContextConfiguration = [[email protected] testClass = TransDispatchingServiceTest, locations = ‘{classpath:conf/applicationContext.xml}‘, classes = ‘{}‘, contextInitializerClasses = ‘[]‘, activeProfiles = ‘{}‘, contextLoader = ‘org.springframework.test.context.support.DelegatingSmartContextLoader‘, parent = [null]]]; transaction manager [o[email protected]491cceb4]; rollback [true]

2.事务配置和spring注入

package com.autoyol.service.trans;

import java.util.Map;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

import com.autoyol.service.trans.impl.TransDispatchingServiceImpl;

/**
 * @author xxx
 * @function
 * @date 2016年4月23日
 * @version
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:conf/applicationContext.xml")
@Transactional
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
public class TransDispatchingServiceTest {
    @Autowired
    private TransDispatchingServiceImpl transDispatchingServiceImpl;  //无面向接口编程,单独的类。
//    @Autowired
//    @Qualifier("testtestddd")
//    private TransDispatchingServiceImpl testtestddd;    //要么单纯实现类,要么面向接口注入。    @service("testtestddd")

//    @Autowired
//    private TransDispatchingService transDispatchingService;  //面向接口编程

//
//    @Autowired
//    private TransDispatchingMapper transDispatchingMapper;
    Long orderNo = 449230224061l;
    Integer carNo = 431319914;
    @Test
    public void testAddCarSelectUpgrade(){
        int i = transDispatchingServiceImpl.addCarSelectUpgrade(orderNo);
        System.out.println("添加车辆升级条件i="+i);
    }

    /*@Test
    public void testA(){
        Map<String,Object> reqMap = new HashMap<String,Object>();
        reqMap.put("orderNo", orderNo);
        reqMap.put("renterNo", 123);
        reqMap.put("rentTime", 201611l);
        reqMap.put("revertTime", 201612l);
        reqMap.put("ownerNo", 456);
        reqMap.put("carNo", carNo);
        reqMap.put("rentAmt", 300);
        reqMap.put("insurance", 300);
        reqMap.put("renterSt", 21);
        reqMap.put("ownereSt", 21);

        int i = transDispatchingMapper.addTransDispatchingInitData(reqMap);
        System.out.println("i="+i);
    }*/

    @Test
    public void testAddTransDispatchingInitData(){
        int i = transDispatchingServiceImpl.addTransDispatchingInitData(orderNo, 123, 201611l, 201612l, 456, carNo, 300, 300, 21, 21);
        System.out.println("添加调度初始化数据i="+i);
    }
    @Test
    public void testUpdateTransDispatchingStatus(){
        int i = transDispatchingServiceImpl.updateTransDispatchingStatus(orderNo, carNo, 2, null, 1);
        System.out.println("修改调度状态i="+i);
    }
    @Test
    public void testQueryTransDispatchingStatus(){
        System.err.println("transDispatchingServiceImpl="+transDispatchingServiceImpl);
//        System.err.println("transDispatchingService="+transDispatchingService);
        Map map = transDispatchingServiceImpl.queryTransDispatchingStatus(orderNo, carNo);
        System.err.println("查询当前的调度状态:map="+map);
    }
    @Test
    public void testRefuseCauseNoSupport(){
        int i = transDispatchingServiceImpl.refuseCauseNoSupport(orderNo, carNo);
        System.out.println("调度原因i="+i);
    }
    @Test
    public void testRefuseCauseLessTime(){
        int i = transDispatchingServiceImpl.refuseCauseLessTime(orderNo, carNo);
        System.out.println("调度原因i="+i);
    }
    @Test
    public void testCancelCauseNoSupport(){
        int i = transDispatchingServiceImpl.cancelCauseNoSupport(orderNo, carNo);
        System.out.println("调度原因i="+i);
    }
    @Test
    public void testCancelCauseLessTime(){
        int i = transDispatchingServiceImpl.cancelCauseLessTime(orderNo, carNo);
        System.out.println("调度原因i="+i);
    }
    @Test
    public void testManualCauseNoSupport(){
        int i = transDispatchingServiceImpl.manualCauseNoSupport(orderNo, carNo);
        System.out.println("调度原因i="+i);
    }
    @Test
    public void testAutoCauseLessTime(){
        int i = transDispatchingServiceImpl.autoCauseLessTime(orderNo, carNo);
        System.out.println("调度原因i="+i);
    }
    @Test
    public void testUpdateTransDispatchingSucc(){
        int i = transDispatchingServiceImpl.updateTransDispatchingSucc(orderNo, carNo, 77, 88, 99, 100);
        System.out.println("调度成功i="+i);
    }
}
时间: 2024-08-03 08:46:47

spring测试junit事务管理及spring面向接口注入和实现类单独注入(无实现接口),实现类实现接口而实现类单独注入否则会报错。的相关文章

Spring声明式事务管理(基于注解方式实现)

----------------------siwuxie095 Spring 声明式事务管理(基于注解方式实现) 以转账为例 1.导入相关 jar 包(共 10 个包) (1)导入核心 jar 包和日志相关的 jar 包 (2)导入 JdbcTemplate 的 jar 包 (3)导入 MySQL 的 JDBC 驱动包 mysql-connector-java 下载链接: https://dev.mysql.com/downloads/connector/j/ (4)导入 AOP 的 jar

spring 声明式事务管理注解方式实现

使用注解实现Spring的声明式事务管理,更加简单! 步骤: 1) 必须引入Aop相关的jar文件 2) bean.xml中指定注解方式实现声明式事务管理以及应用的事务管理器类 3)在需要添加事务控制的地方,写上: @Transactional @Transactional注解: 1)应用事务的注解 2)定义到方法上: 当前方法应用spring的声明式事务 3)定义到类上:   当前类的所有的方法都应用Spring声明式事务管理; 4)定义到父类上: 当执行父类的方法时候应用事务. 案例: 1.

Spring JdbcTemplate 与 事务管理

Spring的JDBC框架能够承担资源管理和异常处理的工作,从而简化我们的JDBC代码, 让我们只需编写从数据库读写数据所必需的代码.Spring把数据访问的样板代码隐藏到模板类之下, 结合Spring的事务管理,可以大大简化我们的代码. Spring提供了3个模板类: JdbcTemplate:Spring里最基本的JDBC模板,利用JDBC和简单的索引参数查询提供对数据库的简单访问. NamedParameterJdbcTemplate:能够在执行查询时把值绑定到SQL里的命名参数,而不是使

Spring JdbcTemplate 与 事务管理 学习

Spring的JDBC框架能够承担资源管理和异常处理的工作,从而简化我们的JDBC代码, 让我们只需编写从数据库读写数据所必需的代码.Spring把数据访问的样板代码隐藏到模板类之下, 结合Spring的事务管理,可以大大简化我们的代码. Spring提供了3个模板类: JdbcTemplate:Spring里最基本的JDBC模板,利用JDBC和简单的索引参数查询提供对数据库的简单访问. NamedParameterJdbcTemplate:能够在执行查询时把值绑定到SQL里的命名参数,而不是使

Spring Cloud 分布式事务管理

Spring Cloud 分布式事务管理 在微服务如火如荼的情况下,越来越多的项目开始尝试改造成微服务架构,微服务即带来了项目开发的方便性,又提高了运维难度以及网络不可靠的概率. Spring Cloud 分布式事务管理 单体式架构 微服务架构 优点: 缺点: 分布式事务的引入 分布式事务解决方案 基于XA协议的两阶段提交 消息事务+最终一致性 TCC编程模式 具体实现 LCN ByteTCC 在说微服务的优缺点时,有对比才会更加明显,首先说一下单体式结构 单体式架构 在单体式架构中,系统通常采

Spring对Hibernate事务管理【转】

在谈Spring事务管理之前我们想一下在我们不用Spring的时候,在Hibernate中我们是怎么进行数据操作的.在Hibernate中我们每次进行一个操作的的时候我们都是要先开启事务,然后进行数据操作,然后提交事务,关闭事务,我们这样做的原因是因为Hibernate默认的事务自动提交是false,他是需要我们人为的手动提交事务,假如你不想每次都手动提交事务的话,你可以在hibernate.cfg.xml我文件中把它设置为事务自动提交: <property name="hibernate

spring 声明式事务管理

简单理解事务: 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是要么都执行要么都不执行.如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元:如果银行卡扣钱失败但是ATM却出了1000块,那么银行将损失1000元.所以,如果一个步骤成功另一个步骤失败对双方都不是好事,如果不管哪一个步骤失败了以后,整个取钱过程都能回滚,也就是完全取消所有操作的话,这对双方都是极好的. 当这两个步骤提交了,执行完毕

Spring(七):事务管理

1.理解事务 在软件开发领域中,全有或全无的操作被称为事务. 事务允许你将几个操作组合成一个要么全部发生要么全部不发生的工作单元. 1.1.事务的特性 事务的4个特性ACID: 原子性(Atomic):事务是由一个或多个活动所组成的一个工作单元. 原子性确保事务中的所有操作全部发生或全部不发生.所有活动成功事务才成功,任意一个活动失败了事务也失败并回滚. 一致性(Consistent):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态. 隔离性(Isolated):事务

Spring框架的事务管理及应用

Spring框架简介 Spring框架是一个2003年2月才出现的开源项目,该开源项目起源自Rod Johnson在2002年末出版的<Expert One-on-One J2EE Design and Development>一书中的基础性代码.在该书中,Rod Johnson倡导J2EE实用主义的设计思想,而Spring框架正是这一思想的更全面和具体的实现.Spring框架由一个容器,一个配置和组织组件的框架,和一组内置的为事务.持久化和Web用户接口提供的服务组成.作为一种轻量级的J2E