<!-- 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的事务管理功能,但我无法让它工作。我一直试图解决它几个小时但没有运气。
上面你可以看到相关的配置xml定义和dao测试类。即使我使用调试级别进行日志记录,也没有回滚机制的足迹。
非常感谢任何帮助
答案 0 :(得分:2)
这是因为Spring AOP只能:
a)和b)是你的错,你需要解决它。 - 克服c)的问题我强烈用AspectJ编译时间代替Spring AOP。
如果我是对的,即使是@Transational
的交易处理也一定不能正常工作。
需要由其他人检查:
我从未见过@Transactional
与JdbcTemplate
的组合,所以我怀疑这是否有效。 - 但我可能错了。