在Spring 3.0中设置特定系统属性的注释?

时间:2014-02-20 17:13:35

标签: java spring unit-testing

我有一套单元测试。有些人会使用dataSource,有些则会使用hsqlbDataSource。此数据源不是我的单元测试/代码中的有线bean,而是通过模板和事务管理器传递使用。因此我打算像这样使用bean defs:

<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属性?

1 个答案:

答案 0 :(得分:0)

使用注释时,无法使用开箱即用的功能,但请查看Spring 3 profiles,因为它允许激活/停用Bean组。

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

springContext.getEnvironment().setActiveProfiles("test")