`
longgangbai
  • 浏览: 7330888 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring3.04和Junit4

阅读更多
在Spring3.x以上必须采用Junit4.8以上,否则可能出现问题。 在Spring相关的测试中如果使用事务采用AbstractJUnit4SpringContextTests
如果不采用事务管理采用AbstractJUnit4SpringContextTests,注意在spring中测试时候必须注意junit4中事务
默认测试中为回滚的了。
package com.easyway.web.services.component.job;

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.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.util.Assert;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:services/service-*.xml","classpath:services/ext/service-*.xml",
		"classpath:services/ext/YichengYunwei/service-*.xml"})
public class InspectionJobTest extends AbstractJUnit4SpringContextTests{



	@Autowired
	InspectionJob myJob;
	
	@Test
	public void testDoJob() {
	
	
	}

}

 

spring3多个事务管理器的使用

被忽略的Spring3小改进——支持多数据源的@Transactional事务注解

在用@Transactional配置事务时,确实没注意过多数据源问题,但是记得之前常用的XML配置方式中,对多数据源支持很简单,我想注解配置起来应该也不会太麻烦。

 

先回顾一下之前个人习惯使用的 <tx:advice> + <aop:config>配置方式,大致步骤如下:
1)定义与事务管理器对应的事务通知
2)配置需要拦截的方法调用切面
3)将切入点连接到相应的事务通知
整个系统的事务,三下配置,一处搞定,相比注解方式,个人觉得更简单、省力、统一;而要支持多数据源,再做一遍这123即可,非常简单。

 

不过同事在网上百度了一圈,说大部分的结论是Spring的@Transactional注解不支持,听到这一点我很诧异,不应该啊,要不查查Spring的官方文档?

一查马上发现,在Spring3.0的参考文档中,针对这个问题的,真新增了一节(10.5.6.2)来解决,参见:
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/transaction.html#transaction-declarative-annotations 

Most Spring applications only need a single transaction manager, but there may be situations where you want multiple independent transaction managers in a single application. The value attribute of the
@Transactional annotation can be used to optionally specify the identity of the
PlatformTransactionManager to be used. This can either be the bean name or the qualifier value
of the transaction manager bean

 

也就是说,在Spring2.5之前,@Transactional注解确实不支持多数据源,但是Spring3为其增加了value属性配置,可以指定当前事务通知对应的事务管理器。

 

检查了一下Spring的changelogs,这个特性是在3.0M4版中加入的:
@Transactional supports qualifier value for choosing between multiple transaction managers

[解难]


看来,或许这是一个有用的小改进,但很可能被大家忽略了。下面是从官方文档中摘抄出来的示例配置方式,供需要的同学参考:

1、配置事务注解驱动、每个数据源对应的事务管理器,并定义“限定符”

Xml代码  
  1. <tx:annotation-driven/>  
  2.   
  3. <bean id="transactionManager1" class="org.springframework.jdbc.DataSourceTransactionManager">  
  4. ...  
  5. <qualifier value="order"/>  
  6. </bean>  
  7. <bean id="transactionManager2" class="org.springframework.jdbc.DataSourceTransactionManager">  
  8. ...  
  9. <qualifier value="account"/>  
  10. </bean>   
Xml代码  收藏代码
  1. <tx:annotation-driven/>  
  2.   
  3. <bean id="transactionManager1" class="org.springframework.jdbc.DataSourceTransactionManager">  
  4. ...  
  5. <qualifier value="order"/>  
  6. </bean>  
  7. <bean id="transactionManager2" class="org.springframework.jdbc.DataSourceTransactionManager">  
  8. ...  
  9. <qualifier value="account"/>  
  10. </bean>   
 

2、在需要事务的地方,指定“限定符”

 

 

Java代码  收藏代码
  1. public class TransactionalService {  
  2.   
  3. @Transactional("order")  
  4. public void setSomething(String name) { ... }  
  5.   
  6. @Transactional("account")  
  7. public void doSomething() { ... }  
  8. }  
Java代码  收藏代码
  1. public class TransactionalService {  
  2.   
  3. @Transactional("order")  
  4. public void setSomething(String name) { ... }  
  5.   
  6. @Transactional("account")  
  7. public void doSomething() { ... }  
  8. }  
 


3、如果不指定“限定符”,将默认使用“transationManager”命名对应的事务管理器

Java代码  收藏代码
  1. The default <tx:annotation-driven> target bean name transactionManager will still be used if no specifically qualified PlatformTransactionManager bean is found  
Java代码  收藏代码
  1. The default <tx:annotation-driven> target bean name transactionManager will still be used if no specifically qualified PlatformTransactionManager bean is found  
 

  

 

分享到:
评论

相关推荐

    spring2.5-hibernate3.04_API

    本资源“spring2.5-hibernate3.04_API”提供了这两个关键库的API帮助文档,旨在帮助开发者深入理解并熟练运用Spring 2.5和Hibernate 3.04,提升开发效率和代码质量。 Spring 2.5是Spring框架的一个重要版本,它在...

    rinex3_RINEX3.04_rinex3.04pdf_rinex3.04pdf_rinex3.04

    Rinex3.04是全球定位系统(GPS)和其他卫星导航系统数据交换的国际标准格式,全称为“Receiver Independent Exchange Format”(接收机独立交换格式)。这个格式的主要目的是促进不同接收机和处理软件之间的兼容性,...

    rinex3_RINEX3.04_rinex3.04pdf_rinex3.04pdf_rinex3.04_源码.zip

    总的来说,这个压缩包包含的资源对于GNSS数据处理和分析的专业人士来说非常有价值,它提供了RINEX 3.04标准的详细说明以及实际操作所需的工具,可以帮助开发者或研究人员更好地理解和利用全球导航卫星系统数据。...

    Rinex3.04协议标准.pdf

    Rinex3.04协议标准 RINEX 3.04 Updates and Changes: 1.Added new signals to the GLONASS (Table 5), QZSS II (Table 8) and BeiDou III (Table 9) signal tables and updated Table A23 2.Added section 9.12 to ...

    Iocomp V3.04 控件

    4. **易用性**:该控件集易于上手,意味着开发者可以快速学习和使用,减少了开发时间和成本。 5. **灵活性**:Iocomp V3.04允许开发者通过编程接口(API)进行深度定制,从而实现独特的功能和设计。 6. **视觉样式...

    tesseract tesseract-3.04.00

    Tesseract 3.04.00是该软件的一个版本,它在识别精度和速度上都有显著的提升。OCR技术主要用于将扫描的文本图像或者照片中的文字转换为可编辑的文本格式,广泛应用于文档自动化、数据录入、表格提取等领域。 **主要...

    tesseract3.04.rar

    4. **API调用**:Tesseract提供了一系列的API,如`tesseract::TessBaseAPI`,用于初始化、设置参数、进行识别和获取结果。 5. **语言数据**:Tesseract支持多种语言,每种语言都有相应的训练数据。加载正确的语言...

    tesseract-3.04和Leptonica-1.71编译器vs2010.zip

    1. tesseract-3.04和Leptonica-1.71可以在vs2010下编译通过 2. 代码目录D:\code\ocr,如果不放在这个目录下可能会有找不到库的现象 3. 参考大神微博http://www.freesion.com/article/224264501/

    iocomp v3.04 SP2

    iocomp公司推出的v3.04 SP2版本就是一个专为此领域设计的强大控件库,它为开发者提供了丰富的工具和资源,以实现各种仪表的高效显示和交互效果。该产品基于C++、VC、BCB、Delphi等编程环境,支持多种编程语言,使得...

    upx3.04.rar

    4. `upx -9 &lt;filename&gt;`: 使用最高级别的压缩,可能会牺牲一些速度来换取更好的压缩率。 需要注意的是,虽然UPX提供了很好的压缩效果,但它并不改变程序的原始行为或功能。然而,过度压缩可能会导致程序运行效率...

    RINEX 3.04

    4.Modified Appendix Table A5 TIME SYSTEM CORR section to clarify the GNSS time system and UTC difference fields 5.Added numerous small corrections and text improvements as listed in the RINEX 3.04 ...

    Delphi ZIP 组件 VCLZipPro 3.04 和 4.51

    VCLZipPro 包含了两个不同版本,即 VCLZipPro 3.04 和 VCLZipPro 4.51,这两个版本分别对应 Delphi 7 和 Delphi XE 开发环境,确保了向后兼容性。 VCLZipPro 3.04 是针对 Delphi 7 开发的组件集,它在 Delphi 7 ...

    iocomp3.04

    刚刚找到的iocomp3.04源码,感兴趣的朋友下载看下.

    tesseract-3.04.00及中英文语言包

    本文主要围绕“tesseract-3.04.00及中英文语言包”这一主题,深入探讨其在Ubuntu 14.04操作系统下的安装、配置和使用。 1. **Tesseract 3.04.00概述** Tesseract 3.04.00是Tesseract OCR的一个稳定版本,发布于...

    GNSS RINEX_3.04.IGS.RTCM 接收机电文格式

    此为 RINEX_3.04 独立接收机交换格式说明,描述了GNSS接收机的观测值文件,导航电文文件,气象数据文件的头文件和数据文件的格式说明,包括字符位的详细说明,还有GPS、GLONASS、BEIDOU等卫星接收电文的例子说明。...

    Odin3_v3.04.zip

    4. **Odin3.ini**:这是Odin3的配置文件,可能包含了软件的设置和默认参数。用户或开发者可以通过修改这个文件来调整Odin3的行为,例如设置端口、超时时间、日志级别等。 在使用Odin3_v3.04进行线刷时,用户需要先...

    upx3.04压缩程序

    4. **性能影响**:虽然UPX能显著减小文件大小,但可能会对程序的启动时间和内存使用产生一定影响,因为需要解压缩过程。对于某些对性能敏感的应用,可能需要权衡压缩的好处和运行时的性能损失。 5. **安全性和反...

    rinex3_RINEX3.04_rinex3.04pdf_rinex3.04pdf_rinex3.04.zip

    4. **时间同步和时间标签**:RINEX 3.04加强了时间标签的精度,确保了不同接收机数据的精确同步,这对于进行精密单点定位(PPP)和相对定位等高级分析至关重要。 5. **元数据信息**:包含了更丰富的元数据,如卫星...

    Odin V3.04

    4. **PDA、AP、CP、HOME分区刷写**:Odin支持对设备的不同分区进行刷写操作,如PDA(包含整个系统)、AP(同PDA)、CP(基带,负责通信功能)和HOME(恢复分区)。 5. **安全检查**:在刷机过程中,Odin会进行各种...

    nsis-3.04-setup nisedit2.0.3.rar

    标题中的"nsis-3.04-setup nisedit2.0.3.rar"表明这是一个包含NSIS 3.04版本安装程序和NisEdit 2.0.3编辑器的压缩文件。 **NSIS 3.04** 是NSIS的最新稳定版本之一,它提供了许多功能和改进,以帮助开发者创建专业...

Global site tag (gtag.js) - Google Analytics