JdbcTemplate支持通过注解进行事务管理。与切面配置相比,注解方式更加简单直观。
JdbcTemplate的事务注解步骤如下:
- 在 Spring 配置文件中定义事务管理器:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
- 使用tx namespace定义事务通知:
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
- 在需要事务支持的方法上使用
@Transactional
注解:
public class UserService {
@Transactional
public void saveUser() {
...
}
}
- @Transactional注解会自动应用事务配置。
例如:
- saveUser()方法添加
@Transactional
注解 - 会自动应用事务通知中定义的规则
- 不需要显示调用事务管理 API 进行控制
所以,通过简单的注解,就可以实现强大的声明式事务管理。
一个完整示例:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
public class UserService {
@Transactional
public void saveUser() {
...
}
}