2014-02-20 55 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") 
相關問題