2014-02-20 57 views
0

我有一套单元测试。有些会使用dataSource,其他人会想要使用hsqlbDataSource。这个数据源不是我的单元测试/代码中的有线bean,而是通过模板和事务管理器传递使用的。因此,我打算用豆DEFS这样的:在Spring 3.0中设置特定系统属性的注释?

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/myDataSource" 
    cache="true" resource-ref="true" lookup-on-startup="false" 
    proxy-interface="javax.sql.DataSource" /> 

<jee:jndi-lookup id="hsqlbDataSource" jndi-name="jdbc/myDataSource" 
       cache="true" resource-ref="true" lookup-on-startup="false" 
       proxy-interface="javax.sql.DataSource" /> 

<bean id="qmat-das-jdbcTemplate" 
    class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate" 
    c:dataSource-ref="${test.datasource:dataSource}" /> 

<bean id="transactionManager" 
    class="org.springframework.transaction.jta.WebSphereUowTransactionManager"> 
    <property name="dataSource" ref="${test.datasource:dataSource}"/> 
</bean> 

我要为我的单元测试(有很多人,当然)挑选和选择要使用的数据源。理想情况下,对我来说有意义的是,每个单元测试都有一个注释,它将系统属性设置为用其自己的默认数据访问覆盖。有没有一种优雅的方式来实现没有属性文件,但只需通过注释设置java属性?

回答

0

使用注释不能使用开箱即用的功能,但可以看看Spring 3 profiles,因为它允许激活/停用bean组。

可以使用系统属性或通过代码来激活bean。此代码可以放在测试超类中以激活仅测试豆:

springContext.getEnvironment().setActiveProfiles("test") 
相关问题