2012-02-03 10 views
4

私はSpring 3.0.5でXMLベースのトランザクション設定を使用しています。注釈ベースに移動することは選択肢ではありません。 XMLベースの設定で@TransactionConfiguration(rollback = true)に相当するものは何ですか?Spring XML tx:@TransactionConfigurationと同等のアドバイスですか?

現時点では、私はJUnitsでロールバックを強制していないので、私のDBは一貫して、ドロップ/クリーニングする必要があるランダムなテストデータでいっぱいです。さらに、私はさまざまなテストの実行の間にPKの競合を持つことになります。次のように

マイapplicatonContext読み取り:

... 
<!-- Wrap all DAO Implementations in a transaction --> 
<aop:config proxy-target-class="false"> 
    <aop:pointcut id="daoOperation" expression="execution(* com.calculator.dao.impl.*Impl.* (..))" /> 
    <aop:advisor pointcut-ref="daoOperation" advice-ref="txAdvice" /> 
</aop:config> 

<tx:advice id="txAdvice"> 
    <tx:attributes> 
     <tx:method name="*" read-only="true" propagation="REQUIRED"/> 
     <tx:method name="execute*" propagation="REQUIRED"/> 
     <tx:method name="query*" propagation="REQUIRED"/> 
     <tx:method name="insert" propagation="REQUIRED"/> 
     <tx:method name="delete" propagation="REQUIRED"/> 
    </tx:attributes> 
</tx:advice> 

<bean class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> 
    <property name="url" value="${datasource.url}" /> 
    <property name="username" value="${datasource.user}" /> 
    <property name="password" value="${datasource.password}" /> 
    <property name="defaultAutoCommit" value="false" /> 
</bean> 

... 

どのように私は、私はすべての私のJUnitsがデフォルトでロールバックすることを指定するのですか?

おかげで、

エリック

+0

この問題は解決しましたか?はいの場合、どのように解決しましたか? – Xstian

+0

@Xstian - それはずっと前からのプロジェクトです。私は直接私の問題の解決策を見つけることに終わったことはありません。私は単体テストを完全にコミットしなかったように記録してしまったと思います。残念ながら、それ以上のことは覚えておらず、私はもはやそのプロジェクトのソースにアクセスすることはできません。また、単体テストのために、Oracleデータベースの代わりにH2 DBを使用してもよいでしょう。私は本当に覚えていない。 –

答えて

1

はあなたのJUnitテストクラスでこの設定を入れてください。

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = "/pathTo/spring/context/applicationContext.xml") 
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true) 
@Transactional 
public class LocationDaoTest extends AbstractTransactionalJUnit4SpringContextTests{ 

    @Test 
    public void testDAOsCRUD(){} 
} 

私はあなたの質問についてすべての回答をいただきたいと思います。

関連する問題