1
<!-- Data source definition -->
<bean id="dataSourceWebsube"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"
    p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url.websube}"
    p:username="${jdbc.username.websube}"   p:password="${jdbc.password.websube}" />

<bean id="jdbcTemplateWebsube" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSourceWebsube" />
</bean>         

<!-- Transaction manager, actually this one is useless since the Transaction Manager Bean is already called transactionManager -->      
<tx:annotation-driven transaction-manager="transactionManager"/>  

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSourceWebsube" />
</bean>

public class Test 
{
@Transactional
public static void testTranscational(JdbcTemplate jdbcTmpl)
{
    String sql = null;                              
    sql = "INSERT INTO NBSM.INT_RTLNOUTBOUND_PRODUCTS(BASEPRODUCTCODE)VALUES(1)";                
    jdbcTmpl.update(sql);           
    throw new RuntimeException();                       
}

public static void main(String[] args) {            
    ApplicationContext ctx = new ClassPathXmlApplicationContext("application-context.xml");
    JdbcTemplate jdbcTmpl = (JdbcTemplate) ctx.getBean("jdbcTemplateWebsube");      
    testTranscational(jdbcTmpl);
}
}

こんにちは、

Spring のトランザクション管理機能をテストしようとしていますが、機能させることができません。私は何時間もそれを解決しようとしてきましたが、運がありません。

上に、関連する config xml 定義と dao テスト クラスが表示されます。ロギングにデバッグ レベルを使用しても、ロールバック メカニズムの痕跡はありません。

どんな助けでも大歓迎です

4

1 に答える 1

2

これは、Spring AOP が次のことしかできないためです。

  • a) Spring マネージド Bean の作業
  • b)非静的メソッドで作業する
  • c) Spring AOP Proxy が呼び出された場合にのみ考慮されます (Bean を他の Bean から呼び出す必要がありますが、それ自体からではありません)。

a) と b) はあなたのせいです。修正する必要があります。-- c) の問題を克服するために、Spring AOP を AspectJ のコンパイル時に大幅に置き換えます。

私が正しければ、トランザクション処理でさえ (byが機能し@Transational ていてはなりません。

他の誰かがチェックする必要があります:

@Transactionalと組み合わせて見たことがないJdbcTemplateので、これが機能しているかどうかは疑問です。――でも、私が間違っているかもしれません。

于 2011-03-08T14:27:58.460 に答える